connection pool은 풀의 데이터베이스에 대한 활성 연결을 유지하여 성능을 향상시킵니다. 풀은 일반적으로 풀 관리자가 관리합니다. 클라이언트 (API)는 풀에서 연결을 빌리고 SQL 쿼리 또는 업데이트를 실행 한 다음 연결을 풀로 다시 반환해야합니다. 그러나 연결 개체가 풀로 다시 반환되지 않으면 풀의 연결이 풀보다 줄어 듭니다. 이것을 연결 풀 누출이라고합니다. 결국이 문제가 계속 발생하면 풀 연결이 끊어지게됩니다.이를 풀 소진이라고합니다.
일반적으로 이는 프로그래머가 리턴 연결 메소드 호출을 잊어 버리거나 일부 조건에서 리턴 연결 메소드가 호출되지 않는 경우에 발생합니다.
특정 응용 프로그램 서버는 연결 누수가 있는지 여부를 감지 할 수 있습니다. 예를 들어 Weblogic Server 8.x 는 이러한 시나리오가 발생할 때 로그에 경고를 표시합니다.
<Feb 17, 2010 4:29:02 AM PST> <Warning> <JDBC> <BEA-001074> <A JDBC pool connection leak was detected. A connection leak occurs when a connection obtained from the pool was not closed explicitly by calling close() and then was disposed by the garbage collector and returned to the connection pool. The following stack trace at create shows wher e the leaked connection was created. Stack trace at connection create: at weblogic.jdbc.wrapper.JTSConnection.initCopy(JTSConnection.java:201) at weblogic.jdbc.jts.Driver.copyConnection(Driver.java:277) at weblogic.jdbc.jts.Driver.copyLocalConnection(Driver.java:257) at weblogic.jdbc.jts.Driver.connect(Driver.java:147) at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:305) .......
누수를 찾으려면 전체 코드 검토를 수행하십시오. 연결이 풀로 다시 돌아 왔는지 확인하십시오 . 또한 PreparedStatments 및 ResultSet과 같은 모든 관련 개체가 닫혀 있는지 확인하십시오. finally 블록 에서 이러한 모든 개체를 정리하여 아래에 표시된대로 확인하십시오.
try { borrowConnection(); executeSQLQueryOrUpdate(); } catch (Exception e) { } finally { try { rst.close(); } catch (SQLException e) { log.warn("Failed to close the Recordset" + e, e); } try { ps.close(); } catch (SQLException e) { log.warn("Failed to close the Prepared Statement" + e, e); } try { // Return the Connection returnConnection(); } catch (SQLException e) { log.warn("Failed to return the Connection" + e, e); } }
https://www.developerfeed.com/question/1641347127/what-database-connection-pool-leak
'Program > Java' 카테고리의 다른 글
JDK 설치 (0) | 2020.09.10 |
---|---|
JDK(Java Development Kit) , JRE(Java Runtime Environment), JVM(Java Virtual Machine) 란? (0) | 2020.04.28 |
DB Connection Pool (0) | 2019.08.08 |
JDBC(Java Database Connectivity) (0) | 2019.08.08 |
ehcache 가이드 (0) | 2019.05.17 |