본문 바로가기
Java

dbcp Connection 자동 관리 -1.자동 누수 관리

by nomore7 2013. 11. 7.



일하다 보면 가끔 Connection pool exhausted  라는 낮익은 문구를 마주칠때가 많다.

 

정확히는 Connection관리를 잘하면 생기지 않는 문제지만,

 

살다보면 실수할 수도 있고...깜박할 수도 있고 해서 가끔 이런 에러가 난다.

 

이런 문제는 사용자를 상대로하는 WEB Service에서는 치명적일 수 있다.

 

만약 관리자를 위한 서버일 경우에는 큰 문제가 되지 않지만 (될 수도 있고)

 

일반 엔드 유저를 위한 서버일 경우에는 문제가 심각해진다.

 

근본적으로 try catch finally 정확하게 connection을 관리하는 것이 중요하지만,

 

이미 소스가 너무 커졌을 경우나 정확한 위치를 찾기 힘들때는 DBCP 의 설정으로 해결 할 수 있다.

 

LogAbandoned: false
RemoveAbandoned: true
RemoveAbandonedTimeout: 300

 

이런식으로 설정하여 줄수 있다. 설정하는 파일의 경우 사용중인 시스템에 따라 다를 수 있지만 대부분 jdbc를 설정하는 곳과 함께 있을 것이라고 생각한다.


간략히 소개하자면 

LogAbandoned 는 로깅여부 - 누수되는 위치를 알 수 있다.

RemoveAbandoned - true

RemoveAbandonedTimeout - 연결을 끊을 시간을 설정한다.

 

주의할 점은  RemoveAbandonedTimeout  시간 이후 바로 그 커넥션이 종료 될 것이라고 생각할 수 있으나 그렇지는 않다.

 

자세한 내용은 다음에 해야지