Beheben von Datenbankverbindungsunterbrechungen in Spring Boot mit jpa-hibernate
Die Fehlermeldung weist darauf hin, dass die Verbindung zwischen Ihrer Spring Boot-Anwendung und der MySQL-Datenbank besteht wurde aufgrund einer Inaktivität beendet, die das konfigurierte Wartezeitlimit des Servers überschreitet. Um dieses Problem anzugehen, gibt es mehrere empfohlene Ansätze:
1. Aktivieren von AutoReconnect:
Eine sofortige Lösung besteht darin, die automatische Wiederverbindung in der JDBC-URL zu aktivieren:
spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true
Diese Methode wird jedoch nicht empfohlen, da sie währenddessen zu unerwartetem Verhalten führen kann aktive Transaktionen.
2. Verbindungsvalidierung:
Ein effektiverer Ansatz besteht darin, die Verbindungsvalidierung während der gesamten Lebensdauer Ihrer Anwendung zu ermöglichen. Konfigurieren Sie die folgenden Eigenschaften:
Maximale aktive Verbindungen:
spring.datasource.max-active=10
Erste Verbindungen:
spring.datasource.initial-size=5
Leere Verbindung Grenzwerte:
spring.datasource.max-idle=5 spring.datasource.min-idle=1
Validierungsabfrage und Timing:
spring.datasource.test-while-idle=true spring.datasource.test-on-borrow=true spring.datasource.validation-query=SELECT 1 spring.datasource.time-between-eviction-runs-millis=5000 spring.datasource.min-evictable-idle-time-millis=60000
Diese Konfiguration stellt sicher, dass inaktive Verbindungen regelmäßig validiert werden und unterbrochene Verbindungen werden aus dem Pool entfernt.
3. HikariCP-Verbindungspool:
Spring Boot 2.x verwendet standardmäßig HikariCP als Verbindungspool. HikariCP bietet eine automatische Verbindungsvalidierung, sodass die Eigenschaft validation-query weggelassen werden kann.
Hinweis: Obwohl von der Verwendung einer Validierungsabfrage abgeraten wird, verfügt HikariCP über eine eigene Methode zur Verbindungsvalidierung, die mehr ist effizient.
Das obige ist der detaillierte Inhalt vonWie behebe ich Verbindungsunterbrechungen bei Spring Boot JPA/Hibernate-Datenbanken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!