Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Połączenie z Db umiera po>4<24 w hibernacji wiosennego rozruchu jpa

Najprostszym sposobem jest określenie autoReconnect w adresie URL JDBC, chociaż nie jest to zalecane podejście.

spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true

Może to powodować problemy, gdy masz aktywne połączenie i podczas transakcji coś się dzieje i nastąpi ponowne połączenie. Nie spowoduje to problemów, gdy połączenie zostanie zweryfikowane na początku transakcji i na początku zostanie nabyte nowe połączenie.

Jednak prawdopodobnie lepiej jest włączyć sprawdzanie poprawności połączeń w czasie życia aplikacji. W tym celu możesz określić kilka właściwości .

Najpierw zacznij od określenia maksymalnej liczby połączeń, które zezwalasz na pulę. (Aby przeczytać o określaniu maksymalnego rozmiaru puli, przeczytaj to ).

spring.datasource.max-active=10

Możesz również określić liczbę początkowych połączeń

spring.datasource.initial-size=5

Następnie chcesz określić minimalną i maksymalną liczbę nieaktywnych połączeń.

spring.datasource.max-idle=5
spring.datasource.min-idle=1

Aby zweryfikować połączenie, musisz określić zapytanie sprawdzające i kiedy sprawdzać. Ponieważ chcesz sprawdzać okresowo, a nie wtedy, gdy połączenie jest pobierane z puli (aby zapobiec zerwaniu połączeń w Twojej puli).

spring.datasource.test-while-idle=true
spring.datasource.test-on-borrow=true
spring.datasource.validation-query=SELECT 1

UWAGA: Użycie validation-query jest faktycznie odradzany, ponieważ JDBC4 ma lepszy/inny sposób sprawdzania poprawności połączenia. HikariCP automatycznie wywoła metodę walidacji JDBC, gdy będzie dostępna.

Teraz, gdy sprawdzasz również, gdy połączenie jest bezczynne, musisz określić, jak często chcesz uruchamiać to zapytanie dla połączeń i kiedy połączenie jest uważane za bezczynne.

spring.datasource.time-between-eviction-runs-millis=5000 (this is the default)
spring.datasource.min-evictable-idle-time-millis=60000 (this is also default)

To wszystko powinno uruchomić walidację twoich (bezczynnych) połączeń, a gdy wystąpi wyjątek lub minie okres bezczynności, twoje połączenia zostaną usunięte z puli.

Zakładając, że używasz Tomcat JDBC jako puli połączeń to to fajna lektura o tym, co i jak skonfigurować.

AKTUALIZACJA: Spring Boot 2.x zmienił domyślną pulę połączeń na HikariCP zamiast Tomcat JDBC.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Porównaj dwie bazy danych MySQL

  2. Jak uzyskać listę widoków MySQL?

  3. Kod PHP do konwersji zapytania MySQL na CSV

  4. W zapytaniach MySQL, po co używać join zamiast gdzie?

  5. MySQL:Dodaj kolumnę sekwencji na podstawie innego pola