Pool 에러(Cannot get a connection, pool error Timeout waiting for idle object) :: 개발/일상_Mr.lee

Pool 에러(Cannot get a connection, pool error Timeout waiting for idle object)

Posted by Mr.mandu.
2017. 10. 16. 06:30 개발/was

프로젝트를 진행하다 에러가 발생하였다.


Could not open JDBC Connection for transaction; 

nested exception is org.apache.tomcat.dbcp.dbcp.SQLNestedException:

Cannot get a connection, pool error Timeout waiting for idle object' 


원인파악

Connection Pool 이 서로 겹치는 현상으로 추정된다.

톰캣의 server.xml 을 확인해보니

maxActive="4" maxIdle="2" 로 구성되어 있었다.


maxIdle : 사용되지 않고 Pool에 저장될 수 있는 최대 connection 수(음수일 경우 제한 없음)

maxActive : 최대 active connection 개수 


그래서 maxActive와 maxIdle의 옵션을 변경하기로 결정하였다.





문제해결

 <GlobalNamingResources>

    <Resource

 maxIdle="30"

maxActive="100"/>

</GlobalNamingResources>


하지만 이전 프로젝트에서는 이러한 문제가 발생하지 않았다.

사용자수가 100명이 넘다 하더라도...


개인적인 생각으로 pool 선언을 프로젝트 내부 소스가 아닌 톰캣에서 설정하고 있기때문에

생긴 문제라고 생각한다.