프로그래밍/오라클

HikariCP 커넥션풀 설정

모지사바하 2015. 8. 17. 14:03

HikariCP 커넥션 풀을 60으로 설정하고,


쿼리를 수행하니, 


로그 레벨이 DEBUG 일 때, 


ORA-12519, TNS:no appropriate service handler found


오류가 발생하였다.. 


위 오류가 발생해도 정상적으로 수행이 되며, 이 오류는 로그레벨이 DEBUG 일 때만 보인다.


위 오류는 오라클 서버에서 설정한 Connection Process 의 수보다 많은 Connection 이 발생하였을 때 발생한다.



[2015-08-17 13:49:56.957 (nnection filler (pool HikariPool-0))] DEBUG c.z.h.p.HikariPool.addConnection(HikariPool.java:500) - HikariPool-0 - Connection oracle.jdbc.driver.T4CConnection@425be8f4 added to pool

[2015-08-17 13:49:57.026 (nnection filler (pool HikariPool-0))] DEBUG c.z.h.p.HikariPool.addConnection(HikariPool.java:500) - HikariPool-0 - Connection oracle.jdbc.driver.T4CConnection@72c51b9b added to pool

[2015-08-17 13:49:57.096 (nnection filler (pool HikariPool-0))] DEBUG c.z.h.p.HikariPool.addConnection(HikariPool.java:500) - HikariPool-0 - Connection oracle.jdbc.driver.T4CConnection@68e8ef4a added to pool

[2015-08-17 13:49:57.169 (nnection filler (pool HikariPool-0))] DEBUG c.z.h.p.HikariPool.addConnection(HikariPool.java:500) - HikariPool-0 - Connection oracle.jdbc.driver.T4CConnection@75a67e70 added to pool

[2015-08-17 13:49:57.231 (nnection filler (pool HikariPool-0))] DEBUG c.z.h.p.HikariPool.addConnection(HikariPool.java:500) - HikariPool-0 - Connection oracle.jdbc.driver.T4CConnection@68a72478 added to pool

[2015-08-17 13:49:57.294 (nnection filler (pool HikariPool-0))] DEBUG c.z.h.p.HikariPool.addConnection(HikariPool.java:500) - HikariPool-0 - Connection oracle.jdbc.driver.T4CConnection@32e4f334 added to pool

[2015-08-17 13:49:57.357 (nnection filler (pool HikariPool-0))] DEBUG c.z.h.p.HikariPool.addConnection(HikariPool.java:500) - HikariPool-0 - Connection oracle.jdbc.driver.T4CConnection@1dd9d89d added to pool


위 오류가 발생한 쿼리는 약 400행 정도를 select 하는 쿼리인데, 쿼리 수행 도중 자꾸 커넥션을 새로 맺었다.




시간이 없어서 자세히 알아보진 못했지만, 


결과를 바로 작성하자면,


원인은 MaximumConnectionPool 크기를 너무 넉넉하게 설정하여, (위 오류가 발생한 경우는 MaximumConnectionPool  Size 는 60이고, Oracle Connection Process 는 150)


풀에서 자꾸 커넥션을 꺼내서 쓰다보니, 오라클 서버에서 설정한 Connection Process 의 수보다 많은 Connection 이 발생하게 되어, 오류가 발생한 것이였다.



MaximumConnectionPool 설정 부분을 지워서 디폴트 설정인 10이 설정되니, 위 오류는 바로 사라졌다.



나중에 시간날때 내부 구조를 자세히 파악해봐야겠다.