show variables like '%timeout
2) wait_timeout 설정값 변경 (설정값 변경 후에는 DB 재시작 필요)set global wait_timeout = 대기시간(초)
set session wait_timeout = 대기시간(초)
wait_timeout = 대기시간(초)
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="validationQuery" value="select 1 from dual" />
<property name="testWhileIdle" value="true" />
<property name="timeBetweenEvictionRunsMillis" value="130000" />
</bean>
설정에 대한 설명
설정 | 설명 |
---|---|
testWhileIdle | true (default false) |
validationQuery | select 1 |
timeBetweenEvictionRunsMillis | 3600000(1시간). validationQuery를 수행할 주기. Evictor 스레드가 동작하는 간격. (default -1. Evictor 스레드의 실행이 비활성화됨) |
참고 : initialSize와 maxActive, maxIdle, minIdle 항목은 동일한 값으로 설정하는 것을 권장
위처럼 설정을 하면 1시간마다 validationQuery을 수행하면서 DB Connection Pool의 Idle 상태 전환을 사전에 방지해 DB 서버에서 Connection을 강제로 끊지 않도록 하는 것이다.
단, DB Connection Pool의 갯수가 많은 경우 모든 Connection에 대해 Idle 상태 검증 및 ValidationQuery를 수행할 수 있도록 timeBetweenEvictionRunsMillis를 좀 더 짧게 선정하는 것을 권장
참고
1.MySql/MariaDB에서 발생하는 Connection 끊김 문제 해결하기
2. 전자정부 프레임워크에서 context-datasource.xml 작성 방법 및 설명