Heim >Datenbank >MySQL-Tutorial >Warum werden meine Spring Boot-Datenbankverbindungen nach Inaktivität unterbrochen und wie kann ich dies verhindern?

Warum werden meine Spring Boot-Datenbankverbindungen nach Inaktivität unterbrochen und wie kann ich dies verhindern?

Linda Hamilton
Linda HamiltonOriginal
2024-12-06 00:32:10444Durchsuche

Why Are My Spring Boot Database Connections Dropping After Inactivity, and How Can I Prevent It?

Verbindung zur Datenbank über den festgelegten Zeitrahmen hinaus in Spring-Boot getrennt

Verbindungen zu einer Datenbank in einer Spring-Boot-Anwendung mit JPA und Hibernate können gehen verloren, wenn die Zeit zwischen den Interaktionen einen bestimmten Grenzwert überschreitet. Dieses Problem geht oft mit einer Fehlermeldung einher, die auf Verbindungsprobleme aufgrund einer Überschreitung des „wait_timeout“-Werts des Servers hinweist.

Um dieses Problem zu beheben, wird von der Verwendung der Spring-Eigenschaften testOnBorrow und validationQuery abgeraten. Stattdessen besteht eine robustere Lösung darin, die folgenden Einstellungen zu konfigurieren:

  • spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true: Automatische Wiederverbindung im JDBC aktivieren URL.
  • spring.datasource.test-while-idle=true: Verbindungen testen, während sie bestehen leer.
  • spring.datasource.test-on-borrow=true: Verbindungen testen, bevor sie aus dem Pool ausgeliehen werden.
  • spring.datasource.validation-query=SELECT 1: Eine Validierung verwenden Abfrage zur Überprüfung der Verbindungsgültigkeit.
  • spring.datasource.time-between-eviction-runs-millis=5000: Geben Sie an Häufigkeit der Verbindungsvalidierungsprüfungen.
  • spring.datasource.min-evictable-idle-time-millis=60000: Definieren Sie das Leerlaufzeitlimit, nach dem Verbindungen überprüft und aus dem Pool entfernt werden.

Um mögliche Probleme mit aktiven Verbindungen während Transaktionen zu vermeiden, wird empfohlen, Verbindungen zu Beginn einer Transaktion zu validieren und gegebenenfalls eine neue Verbindung zu erwerben erforderlich.

Diese Konfigurationseinstellungen ermöglichen eine regelmäßige Validierung von Verbindungen und verhindern, dass sich veraltete Verbindungen im Pool ansammeln. Dadurch sollte die Verbindung zur Datenbank auch über längere Zeiträume ohne Aktivität stabil bleiben.

Das obige ist der detaillierte Inhalt vonWarum werden meine Spring Boot-Datenbankverbindungen nach Inaktivität unterbrochen und wie kann ich dies verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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