집 >데이터 베이스 >MySQL 튜토리얼 >Java 웹 애플리케이션에서 JDBC MySQL 연결 풀 고갈을 방지하는 방법은 무엇입니까?
Java 웹 애플리케이션에서 연결 풀링을 사용할 때 풀이 소진되지 않도록 하는 것이 중요합니다. 이는 연결이 제대로 닫히지 않아 사용 가능한 연결 부족으로 인해 애플리케이션이 충돌하는 경우 발생할 수 있습니다.
문제 이해
제공된 Java 코드에서, 연결 풀은 데이터 소스를 사용하여 생성되고 Bean에 의해 관리됩니다. 그러나 코드는 사용 후 연결을 닫지 못하여 풀에서 사용 가능한 연결이 빠르게 부족해집니다.
연결 누출 식별 및 수정
문제가 발생합니다. 연결, 명령문 및 결과 세트가 제대로 닫히지 않아 발생합니다. 이 문제를 해결하려면 try-with-resources 블록 내에서 JDBC 리소스를 닫아야 합니다.
public void create(Entity entity) throws SQLException { try ( Connection connection = dataSource.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL_CREATE); ) { statement.setSomeObject(1, entity.getSomeProperty()); // ... statement.executeUpdate(); } }
Java 7 이전 버전의 경우 수동으로 리소스를 닫는 try-finally 블록을 사용해야 합니다.
public void create(Entity entity) throws SQLException { Connection connection = null; PreparedStatement statement = null; try { connection = dataSource.getConnection(); statement = connection.prepareStatement(SQL_CREATE); statement.setSomeObject(1, entity.getSomeProperty()); // ... statement.executeUpdate(); } finally { if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {} if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {} } }
연결 풀링에서 연결 닫기
필수 연결 풀링을 사용하는 경우에도 연결을 닫습니다. 연결 풀링은 자동으로 닫기를 처리하지 않습니다. 대신 실제로 연결을 닫는 대신 풀에 연결을 반환할 수 있는 래핑된 연결을 사용합니다.
연결을 닫지 못하면 연결이 풀로 반환되지 않고 연결이 소진됩니다. 적절하게 닫으면 연결이 재사용을 위해 풀로 반환됩니다.
추가 리소스
자세한 내용은 다음 리소스를 참조하세요.
위 내용은 Java 웹 애플리케이션에서 JDBC MySQL 연결 풀 고갈을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!