DBCP: 5개의 글
HikariCP hikariCP는 스프링 부트 2.0부터 default JDBC connection pool이다. hikariCP github사이트에 가보면 엄청 빠르고, 가볍고, 신뢰할 수 있다고 설명한다. 심지어 "zero-overhead"라며 엄청나게 높은 성능을 강조하고 벤치마크 결과도 보여준다. 원하면 벤치마크 테스트 소스도 가져가서 직접 돌려보라고도 하는데 자세한건 모르겠고 나만의 테스트 환경을 만들어서 테스트 해보기로 했다. 스프링 부트에서 hikariCP 성능 테스트 PC 사양도 중요하고 인터넷 사양도 중요하고 로컬 DB냐 원격 DB냐도 갈리고 여러 환경이 중요한 것으로 아는데 크게 생각 안하고 단순히 직접 경험해본다에 중점을 두었다. 먼저 hikariCP는 스프링부트 2.0부터 defau..
개요 JDBC, DBCP, JNDI 와 datasource, connection pool에 대한 이해 아래 포스팅들이 내용을 정리하는데 큰 도움을 줬다. - https://eongeuni.tistory.com/43 - https://minwan1.github.io/2017/04/08/2017-04-08-Datasource,JdbcTemplate/ Connection과 Connection pool DriverManager.getConnection()은 실제 자바프로그램과 데이터베이스를 네트워크상에서 연결을 해주는 메소드이다. Connection은 네트워크상의 연결 자체를 의미한다. (자바프로그램과 DB사이의 길) 보통 Connection 하나당 트랜잭션 하나를 관리한다. 트랜잭션은 하나 이상의 쿼리에서 동..
DBCP validationQuery 설정* 참고 사이트: http://linuxism.tistory.com/579 * 참고 사이트: Configuring the High Concurrency JDBC Connection Pool * 참고 사이트: DBCP 설정 정리 에러 메시지 일부분 - is longer than the server configured value of 'wait_timeout'. 원인 - 마지막으로 DB에 커넥션을 맺은후 사용이 없다 보니 데이터 베이스 커넥션이 끝겼다. 해결책 - 특정 시간마다 커넥션을 확인 하는 셋팅을 지정한다. 적용 코드 - MySQLvalidationQuery="select 1" - 오라클의 경우validationQuery="select 1 from dual" ..
tomcat dbcp를 이용하여 검색데이터 추출할 때, mysql 사용. mysql wait_timeout 설정(기본값 28800 , 8시간) 에 의해 커넥션이 연결된 이후 해당 커넥션의 close 없이 8시간이 지나면 해당 커넥션을 종료. ▶issue : 종료된 커넥션을 dbcp의 connection pool 에선 여전히 가지고 있는 상태. 이런 상황에서 DB 관련 프로그램이 호출되면 커넥션 관련 에러가 발생. ▶solution : java에서 DB를 사용하기 전에 해당 connection 이 정상적인지 검사를 하도록 하는 것. 이 옵션이 validationQuery. 와 같이 사용하면 된다. 오라클의 경우 : validationQuery="select 1 from dual" 출처 : blog.hoon..
DB Connection Pool을 사용하다가, 어쩌다가 가끔 커넥션이 끊겨 버리는 오류가 발생하기도 한다. 아래는 Jakarta Commons DBCP 커넥션 풀을 사용하면서 그런 현상이 발생했을 때의 대처 방법이다. 어떤 서버는 소켓이 열린상태로 장시간 아무런 데이터 이동없이 방치될경우 소켓을 강제로 닫아버리는 경우도 있습니다. 보름에 한 번정도 발생한다는 것은 아마도, 보름에 한 번 정도 아무 사용자도 없는 상태가 장시간 계속되었기 때문일 것으로 예상됩니다. DBCP를 사용하시는 것으로 보이는군요. 그렇다면 설정을 통해 손쉽게 해결할 수 있습니다. * DBCP 설정하기 참조 상세 설정은 DBCP를 어떻게 호출하느냐(Spring, 혹은 Tomcat DataSource 설정, 기타 등등)에 따라 전혀 ..