2012년 8월 2일 목요일

MyBatis + Software caused connection abort: recv failed

참고: http://linuxism.tistory.com/580

서버를 실행하고 오래 접속을 하지 않으면 아래 와 같은 에러가 발생할 수 있다.
Software caused connection abort: recv failed

바로 다시 접속하면 연결이 되기는 하지만 신경이 쓰이는 부분이다.

DB 와 연결하고 오래 사용하지 않으면 연결이 끊긴다. 그래서 주기적으로 아주 간단한 query 를 날려 줄 필요가 있다.

아래와 같이 설정 하였다.
<environments default="development">
 <environment id="development">
  <transactionManager type="JDBC"/>
  <dataSource type="POOLED">
   <property name="driver" value="${jdbc.driver}"/>
   <property name="url" value="${jdbc.url}"/>
   <property name="username" value="${jdbc.username}"/>
   <property name="password" value="${jdbc.password}"/>
   <!-- Pool ping setting : http://linuxism.tistory.com/580 -->
   <property name="poolMaximumActiveConnections" value="20"/>
   <property name="poolMaximumIdleConnections" value="20"/>
   <property name="poolMaximumCheckoutTime" value="20000"/>
   <property name="poolPingEnabled" value="true"/>
   <property name="poolPingQuery" value="select 1"/>
   <property name="poolPingConnectionsNotUsedFor" value="43200"/>
   <property name="poolTimeToWait" value="30000"/>
   <property name="driver.encoding" value="UTF-8"/>
  </dataSource>
 </environment>

...

poolPingEnabled 를 true 로 설정한다.
poolPingQuery 는 select 1 과 같은 아주 간단한 query 로 설정한다.
poolPingConnectionsNotUsedFor 에 지정한 시간 만큼 사용하지 않으면 ping query 를 날린다. (millisecond 단위)

댓글 없음:

댓글 쓰기