JDBC-Verbindungs-Timeout-Lösung: Untersuchung des Wait_Timeout-Fehlers
Dieser Artikel befasst sich mit einem Problem, bei dem bei einer Spring Boot-Anwendung, die JPA Hibernate mit MySQL verwendet, eine Verbindung auftritt Kündigung nach einer bestimmten Zeit. Die Fehlermeldung weist darauf hin, dass die wait_timeout-Konfiguration des MySQL-Servers überschritten wurde.
Mögliche Lösungen
Anfangs identifizierte der Entwickler die Optionen „testOnBorrow“ und „validationQuery“, aber Diese werden zur Lösung des Timeout-Problems nicht empfohlen.
Empfohlener Ansatz: Konfigurieren der Verbindungsvalidierung und des Poolverhaltens
Die bevorzugte Lösung besteht darin, die Verbindungsvalidierung und das Poolverhalten zu konfigurieren, um sicherzustellen, dass inaktive oder problematische Verbindungen identifiziert und entfernt werden.
JDBC-URL-Parameter
Das Hinzufügen des Parameters „autoReconnect“ zur JDBC-URL ist eine schnelle Lösung, sollte aber mit verwendet werden Vorsicht, da es bei aktiven Transaktionen zu Problemen kommen kann.
spring.datasource.max-active
Das Festlegen dieses Parameters begrenzt die maximale Anzahl aktiver Verbindungen im Pool.
spring.datasource.initial-size
Angabe der Anzahl der anfänglichen Verbindungen im pool.
spring.datasource.max-idle und spring.datasource.min-idle
Konfigurieren der maximalen und minimalen Anzahl inaktiver Verbindungen .
spring.datasource.test-while-idle und spring.datasource.test-on-borrow
Diese Parameter ermöglichen die Verbindungsvalidierung im Leerlauf oder beim Abruf aus dem Pool.
spring.datasource.validation- Abfrage
Dieser Parameter gibt die für die Verbindung verwendete Abfrage an Validierung.
Hinweis:Verwenden Sie eine JDBC4-Validierungsmethode anstelle der Option „validationQuery“, falls verfügbar.
spring.datasource.time-between-eviction- läuft-millis und spring.datasource.min-evictable-idle-time-millis
Diese Parameter steuern die Häufigkeit und Kriterien für das Entfernen inaktiver Verbindungen aus dem Pool.
Durch Implementierung dieser Konfigurationen , validiert Ihre Anwendung regelmäßig Verbindungen und entfernt ungültige Verbindungen, um den Verbindungs-Timeout-Fehler zu verhindern. Spring Boot 2.x verwendet HikariCP als Standardverbindungspool, der erweiterte Verbindungsverwaltungsfunktionen bietet. Es wird empfohlen, die Dokumentation zu weiteren Konfigurationsoptionen zu konsultieren.
Das obige ist der detaillierte Inhalt vonWie behebe ich JDBC-Verbindungs-Timeout-Fehler in Spring Boot-Anwendungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!