Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum erhalte ich die Fehlermeldung „MySQLNonTransientConnectionException: Nach dem Schließen der Verbindung sind keine Vorgänge zulässig' und wie kann ich das Problem beheben?

Susan Sarandon
Freigeben: 2024-10-30 04:59:02
Original
1020 Leute haben es durchsucht

Why Am I Getting

Datenbank-Timeout und Verbindungspooling-Überlastung

Dieses Problem im Ruhezustand: „com.mysql.jdbc.Exceptions.jdbc4.MySQLNonTransientConnectionException: Keine Vorgänge zulässig.“ „After Connection Closed“ entsteht, wenn eine dauerhafte Verbindung aufgrund von Inaktivität implizit geschlossen wird.

Ursache:

Die Verbindung wird hergestellt, bleibt aber über einen längeren Zeitraum inaktiv das „wait_timeout“ des Servers oder die Client-Timeout-Einstellungen wie „connectionTimeout“.

Lösung:

1. Server- und Client-Timeouts anpassen:

  • Erhöhen Sie serverseitig den Parameter „wait_timeout“ in der MySQL-Konfiguration.
  • Geben Sie clientseitig „connectionTimeout“ an. und „readTimeout“-Eigenschaften in Ihrer Verbindungskonfiguration.

2. Verbindungspooling konfigurieren:

  • Verwenden Sie einen Verbindungspool eines Drittanbieters wie C3P0 anstelle des integrierten Pools von Hibernate.
  • Konfigurieren Sie geeignete Poolparameter wie „maxPoolSize“, „ „minPoolSize“, „idleTimeout“ und „maxIdleTime“.

Beispielkonfiguration für hibernate.cfg.xml mit C3P0:

<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>
Nach dem Login kopieren

Zusätzlich Tipps:

  • Überprüfen Sie alle Firewalls oder Proxyserver, die möglicherweise Verbindungen blockieren oder das Zeitlimit überschreiten.
  • Erwägen Sie die Verwendung eines JDBC-Treibers, der JDBC Connection Pooling unterstützt, wie MySQL Connector/ J.
  • Überwachen Sie Verbindungsnutzungsmuster und passen Sie die Poolgrößen entsprechend an.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „MySQLNonTransientConnectionException: Nach dem Schließen der Verbindung sind keine Vorgänge zulässig' und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage