>  기사  >  데이터 베이스  >  \"MySQLNonTransientConnectionException: 연결이 닫힌 후 작업이 허용되지 않습니다\"가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

\"MySQLNonTransientConnectionException: 연결이 닫힌 후 작업이 허용되지 않습니다\"가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-30 04:59:02992검색

Why Am I Getting

데이터베이스 시간 초과 및 연결 풀링 과부하

이 Hibernate 문제, "com.mysql.jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: 작업이 허용되지 않습니다. 연결이 닫힌 후"는 비활성으로 인해 영구 연결이 암시적으로 닫힐 때 발생합니다.

원인:

연결이 설정되었지만 다음 시간을 초과하는 오랜 기간 동안 비활성 상태로 유지됩니다. 서버의 "wait_timeout" 또는 "connectionTimeout"과 같은 클라이언트 시간 초과 설정.

해결 방법:

1. 서버 및 클라이언트 시간 초과 조정:

  • 서버 측에서는 MySQL 구성에서 "wait_timeout" 매개변수를 늘립니다.
  • 클라이언트 측에서는 "connectionTimeout"을 지정합니다. 연결 구성의 "readTimeout" 속성.

2. 연결 풀링 구성:

  • Hibernate의 내장 풀 대신 C3P0과 같은 타사 연결 풀을 사용합니다.
  • "maxPoolSize"와 같은 적절한 풀 매개변수를 구성합니다. minPoolSize," "idleTimeout" 및 "maxIdleTime."

C3P0을 사용한 샘플 hibernate.cfg.xml 구성:

<code class="xml"><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="c3p0.max_size">20</property>
<property name="c3p0.min_size">5</property>
<property name="c3p0.timeout">1800</property>
<property name="c3p0.idleTestPeriod">3600</property>
<property name="c3p0.maxIdleTime">3600</property></code>

추가 팁:

  • 연결을 차단하거나 시간 초과할 수 있는 방화벽이나 프록시 서버를 확인하세요.
  • MySQL 커넥터/와 같은 JDBC 연결 풀링을 지원하는 JDBC 드라이버 사용을 고려하세요. J.
  • 연결 사용 패턴을 모니터링하고 이에 따라 풀 크기를 조정하세요.

위 내용은 \"MySQLNonTransientConnectionException: 연결이 닫힌 후 작업이 허용되지 않습니다\"가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.