WAS에서 DB 커넥션상태체크 후 유효하지 않은 경우 Connection Refresh 설정 적용
1. DB 커넥션 상태 체크
DB 커넥션 상태를 체크하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 validationQuery를 사용하는 것입니다. 이는 특정한 SQL 쿼리를 통해 커넥션이 유효한지 확인하는 방법입니다.
<datasource>
...
<validation-query>SELECT 1</validation-query>
...
</datasource>
2. Connection Refresh 설정
커넥션이 유효하지 않을 경우 커넥션 풀에서 해당 커넥션을 제거하고 새로운 커넥션을 생성하도록 설정할 수 있습니다. 이는 주로 커넥션 풀을 관리하는 라이브러리나 WAS의 설정을 통해 가능합니다.
예를 들어, Apache Tomcat의 경우 testOnBorrow와 testWhileIdle 등의 설정을 통해 비슷한 기능을 제공할 수 있습니다:
<Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource"
...
validationQuery="SELECT 1"
testOnBorrow="true"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="30000"
minEvictableIdleTimeMillis="60000"
...
/>
위 설정에서 testOnBorrow가 true로 설정되면 커넥션을 대여할 때마다 validationQuery를 실행하여 커넥션이 유효한지 확인합니다. testWhileIdle이 true로 설정되면 커넥션 풀의 유휴 상태 커넥션도 주기적으로 검증하여 유효하지 않은 커넥션을 제거합니다.
3. 추가 설정
더 나아가 특정 WAS에 따라 다양한 설정이 필요할 수 있습니다. 예를 들어, WebLogic에서는 아래와 같은 설정을 통해 유효하지 않은 커넥션을 처리할 수 있습니다:
...
<test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>
<test-frequency-seconds>300</test-frequency-seconds>
<test-connections-on-reserve>true</test-connections-on-reserve>
<test-connections-on-release>true</test-connections-on-release>
...
</jdbc-data-source>
각 WAS와 커넥션 풀 관리 라이브러리의 문서를 참고하여 필요한 설정을 적용하십시오. 이를 통해 커넥션 상태를 체크하고 유효하지 않은 커넥션을 적절히 처리할 수 있습니다.
------------- 기타 --------
|
WAS에서 DB 커넥션 상태 체크 후 유효하지 않은 경우 Connection Refresh 설정 적용 |
원인 | 키오스크 DB CPU 사용률 증가로 DB 스펙업 (4xlarge → 8xlarge)한 Stand-By DB로 Fail-over 진행 후 WAS에서 DB 커넥션 실패 발생 |
- |
(필수) WAS에서 DB 커넥션 상태 체크 후 유효하지 않은 경우 Connection이 Refresh 될 수 있도록 WAS DB Connection Pool 유효성 관리 옵션을 설정합니다.Why?WAS에서는 DB 재기동 및 Fail-over 등 DB상태 및 DB 커넥션이 비정상인 경우에는 WAS와 DB간 커넥션 상태가 유효한지 체크하고, 새로운 커넥션이 생성될 수 있도록 DB 커넥션 유효성 체크 설정이 필요합니다.애플리케이션이 Connection을 요청했을 때 Connection을 애플리케이션에 넘겨주기 전 특정 쿼리를 수행하여 Connection의 상태를 점검(validation)하는 기능으로, JDBC Connection 내부 에러로 인한 끊김, 방화벽에 의한 소켓 끊김 현상 등을 체크할 때 유용합니다. Connection의 상태에 이상이 있는 경우 Connection을 DB로부터 새로 받아 애플리케이션에 전달합니다. 만약 RAC를 위한 클러스터 데이터소스에 속한 데이터소스라면 반드시 이 설정을 해야 합니다. ✅ ActivityWAS에서 DB connection Pool의 커넥션 유효성을 관리하는 주요 옵션을 적용하여 DB 커넥션을 관리해야합니다.📖 [Tomcat] DB connection Pool 관리 옵션✔connection 유효성 관리 주요 옵션
📖 [WebLogic] DB connection Pool 관리 옵션✔connection 유효성 관리 주요 옵션
(WebLogic 버전별로 URL 상이) 📖 [JEUS] DB connection Pool 관리 옵션✔connection 유효성 관리 주요 옵션
|
근본원인 |
키오스크 DB CPU의 급격한 증가 (80% → 98.8%)에 따라 스펙업DB로 Fail-over하여 WAS에서 JDBC Connection이 비정상적인 상태에서 JDBC connection pool에서 커넥션을 얻어올 때 커넥션 유효성 체크하는 검증 옵션 미설정으로, 비정상 커넥션이 refresh 되지 않았음
|