Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Die Spring-App verliert nach 8 Stunden die Verbindung zu MySql. Wie richtig konfigurieren?

Die kurze Antwort ist, es sollte genug sein. DBCP unterstützt das Testen der Verbindung beim Ausleihen aus dem Verbindungspool (Standard), unterstützt aber auch das Testen bei Rückgabe und das Testen im Leerlauf.

Es lohnt sich auch zu verstehen, was hier möglicherweise schief läuft. Es hört sich so an, als ob etwas zwischen Ihrem Tomcat-Server und der Datenbank die Leerlaufverbindung nach einer Zeitüberschreitung unterbricht (z. B. ein Router oder eine Firewall). Das Problem dabei ist, dass Tomcat denkt, dass es immer noch eine gültige Verbindung hat, versucht, etwas mit der Verbindung zu tun und fehlschlägt, aber die Verbindung am Leben erhält und sie an den Pool zurückgibt. Jetzt schlägt jeder weitere Versuch, mit der Datenbank zu kommunizieren, fehl, wenn dieselbe unterbrochene Verbindung vom Pool erhalten wird.

Ich denke, es war Michael Nygards exzellentes 'Release It!' Buch, das dieses Szenario in einer seiner Geschichten aus dem Schützengraben beschrieb.

Sie sollten sich auch ansehen, wie MySQL tote Verbindungen bereinigt, denn wenn Tomcat nach 8 Stunden die Verbindung verliert, wird die Datenbank auch nichts von der fehlgeschlagenen Verbindung wissen.

Ein letzter Punkt, wenn Sie Tomcat 7 verwenden, wechseln Sie zu ihrer neuen Verbindung Becken da es eine bessere Leistung als DBCP bietet.