본문 바로가기

프로그래밍/JAVA

tomcat - 데이타베이스 커넥션 풀이 새는 것을 막는 방법

반응형

데이타베이스 커넥션 풀이 새는 것을 막는 방법 

데이타베이스 커넥션 풀은 데이타베스의 커넥션들의 풀을 만들고 관리합니다. 이미 있는 커넥션을 재생하여 재사용하는 것은 새 커넥션을 가져오는 것보다 효율적입니다. 


커넥션 풀링에는 한가지 문제가 있습니다. 웹 애플리케이션은 명시적으로 ResultSet, Statement, Connection을 닫아야 합니다. 웹 애플리케이션에서 이들 자원들을 닫지 못하게 되면 다시 재사용할 수가 없으며 데이타베이스 커넥션 풀 "구멍"이 생깁니다. 이것은 결국 웹 애플리케이션에서 더 이상 쓸 수 있는 데이타베이스 커넥션이 없을 때 커넥션 에러를 내게 될 것입니다. 


이에 대한 해결책이 있습니다. Jakarta-Commons DBCP는 이렇게 버려진 커넥션을 추척하고 복구하도록 설정할 수 있습니다. 복구할 뿐만 아니라 이들 자원들을 열고서는 닫지 않았던 코드를 찾아 추적 결과를 만들어내기도 합니다. 


버려진 커넥션이 제거되고 재생되도록 DBCP DataSource를 설정하기 위해 DBCP DataSource Resource의 ResourceParams에 아래 매개변수를 추가하면 됩니다. : 


   

             

              removeAbandoned

              true

            


  

   


사용할 수 있는 커넥션이 부족해진다면 DBCP는 버려진 커넥션을 찾아 복구하고 재생합니다. 디폴트는 false로 되어 있습니다. 


커넥션이 버려졌다고 간주되기 전에 사용되지 않은 시간(초)를 설정하기 위해 removeAbandonedTimeout를 설정하십시오. 


   

             

              removeAbandonedTimeout

              60

            


  

   


버려진 커넥션을 제거하는데 기본적으로 정해진 타임아웃 시간은 300초입니다. 


만일 커넥션 자원을 낭비한 코드 위치의 로그를 남기려고 한다면 logAbandoned 패러미터를 true로 할 수 있습니다. 


   

             

              logAbandoned

              true

            


  

   


기본은 false로 되어 있습니다. 

 


반응형