사용자 도구

사이트 도구


java:database:bonecp

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:database:bonecp [2013/01/04 12:14]
kwon37xi [BoneCP]
java:database:bonecp [2015/09/30 09:57] (현재)
kwon37xi
줄 1: 줄 1:
 ====== BoneCP ====== ====== BoneCP ======
 +  * **Deprecated** 개발자가 HikariCP를 추천하고 있음.
   * http://jolbox.com/   * http://jolbox.com/
   * Multi Core CPU 지원, JDBC Connection Pool   * Multi Core CPU 지원, JDBC Connection Pool
줄 11: 줄 12:
    <property name="username" value="#{username}"/>    <property name="username" value="#{username}"/>
    <property name="password" value="#{password}"/>    <property name="password" value="#{password}"/>
-   <property name=idleConnectionTestPeriodInSeconds value="60"/>+   <property name="idleConnectionTestPeriodInSecondsvalue="60"/>
    <property name="idleMaxAgeInSeconds" value="240"/>    <property name="idleMaxAgeInSeconds" value="240"/>
    <property name="maxConnectionsPerPartition" value="#{maxConnectionsPerPartition}"/>    <property name="maxConnectionsPerPartition" value="#{maxConnectionsPerPartition}"/>
줄 23: 줄 24:
 </bean> </bean>
 </code> </code>
 +  * ''idleMaxAge''는 ''idleConnectionTestPeriod''보다 커야한다. 그렇지 않으면  idleMaxAge에 도달하면 커넥션을 끊어버리기 때문에 실제로 ''idleConnectionTestPeriod''는 사실상 필요가 없어지게 된다.
  
 +===== JMX MBean =====
 +  * 기본적으로 JMX MBean을 생성해준다.
 +  * 해당 MBean의 이름은 ''setPoolName()''으로 지정한 이름이된다.
 +  * ''boneCpDataSource.getConnection()''이 한 번이라도 호출이 되어야만 MBean이 생성된다.
  
 +===== 0.8.RELEASE bug =====
 +<code>
 +WARN ConnectionPartition.finalizeReferent - BoneCP detected an unclosed connection (in pool 'pool name') and 
 +will now attempt to close it for you. You should be closing this connection in your application - enable 
 +connectionWatch for additional debugging assistance or set disableConnectionTracking to true to disable 
 +this feature entirely.
 +
 +# 위 WARNING이 발생하면서 MySQL 사용시에 다음과 같은 오류가 연쇄 발생
 +....
 +Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 
 +   No operations allowed after connection closed.
 +</code>
 +
 +[[https://bugs.launchpad.net/bonecp/+bug/1259257|Bug #1259257 “BoneCP 0.8.0-release erroneously detecting unclose...” : Bugs : BoneCP]] 버그 리포팅 돼 있는 상태.
 +
 +''**boneCpDataSource.setDisableConnectionTracking(true);**''로 문제 해결됨.
 +<code>
 +// Spring 등을 통해 connection release가 100% 보장되는 경우 다음처럼 커넥션 트랙킹을 disable.
 +boneCpDataSource.setDisableConnectionTracking(true);
 +
 +// 다른곳에서의 해결책 : https://groups.google.com/forum/#!topic/play-framework/eshzvWuNQcc
 +boneCpDataSource.setStatisticsEnabled(true);
 +boneCpDataSource.setReleaseHelperThreads(2); // 이 값을 2로하면 문제가 사라진다 함.
 +</code>
 +
 +===== Connection 끊김 문제 =====
 +  * 아래와 같은 에러가 발생한다.<code>
 +Database access problem. Killing off this connection and all remaining connections in the connection pool. SQL State = 08007
 +Communications link failure during rollback(). Transaction resolution unknown. 
 +</code>
 +  * 실제 DB 접속이 끊겨서 발생하는 오류인 듯 함. ping 쿼리 주기와 실제 ping이 날라가는지 확인 해 볼 것. 또한 ping을 날린다 하더라도 DB설정이나 네트워크 라우터 등에서 끊을 가능성도 배제할 수 없슴.
java/database/bonecp.1357269262.txt.gz · 마지막으로 수정됨: 2013/01/04 12:14 저자 kwon37xi