사용자 도구

사이트 도구


java:database:dbcp

문서의 이전 판입니다!


DBCP - Java Connection Pool

Eviction 정책

  • numTestsPerEvictionRun : -1을 주면 매번 전체 idle 커넥션에 대한 eviction 테스트를 진행하며 이 경우에는 성능저하가 있을 수 있음.
  • timeBetweenEvictionRunsMillis : numTestsPerEvictionRun이 작은 상태에서 이 값도 작으면 오랜시간 idle 상태로 유지되면서 비정상 커넥션으로 떨어질 가능성이 높아짐.
  • 결국, numTestsPerEvictionRun는 작게(3 정도?), timeBetweenEvictionRunsMillis 도 작게(5000ms 정도?)로 주는 것이 좋다.

maxConnLifetimeMillis 오류로그

  • java.lang.Exception: The lifetime of the connection [300,008] milliseconds exceeds the maximum permitted value of [300,000] milliseconds 와 같은 WARN 메시지 발생

validationQuery

  • testOnBorrow 혹은 testWhileIdle 등에 사용되는 쿼리 유효성 검사 쿼리.
  • DBCP2와 JDBC 4를 지원하는 Driver를 조합해서 사용할 경우 이 값을 비워두면 Connection.isValid(int)를 호출한다.
  • JDBC 4 드라이버는 이 메소드을 성능 저하없이 커넥션의 유효성을 검사하는 방식으로 구현한다.
  • 따라서 validationQuery 값은 비워두는 것이 좋다.
  • MySQL JDBC의 경우에는 /* ping */으로 시작하는 쿼리를 지정해도 동일한 효과가 난다.
  • validationQueryTimeout 값도 함께 지정해주도록 한다. 초(sec) 단위.

참고

java/database/dbcp.1451825092.txt.gz · 마지막으로 수정됨: 2016/01/03 21:14 저자 kwon37xi