Mysql
 sql >> база данни >  >> RDS >> Mysql

Връзката към Db замира след>4<24 в хибернация на spring-boot jpa

Най-лесният начин е да посочите autoReconnect свойство в URL адреса на JDBC, въпреки че това не е препоръчителният подход.

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

Това може да създаде проблеми, когато имате активна връзка и по време на транзакция се случва нещо и ще се случи повторно свързване. Няма да има проблеми, когато връзката се потвърди в началото на транзакцията и се получи нова връзка в началото.

Въпреки това вероятно е по-добре да активирате валидирането на вашите връзки по време на живота на вашето приложение. За това можете да посочите няколко свойства .

Първо започнете, като посочите максималния брой връзки, които разрешавате за пула. (За четене относно определянето на максималния размер на басейна прочетете това ).

spring.datasource.max-active=10

Може също да искате да посочите броя на първоначалните връзки

spring.datasource.initial-size=5

След това искате да посочите минималния и максималния брой неактивни връзки.

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

За да потвърдите връзката, трябва да посочите заявка за валидиране и кога да потвърдите. Както искате да проверявате периодично, вместо кога се извлича връзка от пула (това, за да предотвратите прекъснати връзки във вашия пул).

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

ЗАБЕЛЕЖКА: Използването на validation-query всъщност се обезкуражава, тъй като JDBC4 има по-добър/различен начин за извършване на проверка на връзката. HikariCP автоматично ще извика метода за проверка на JDBC, когато е наличен.

Сега, когато проверявате и докато връзката е неактивна, трябва да посочите колко често искате да изпълнявате тази заявка за връзките и кога връзката се счита за неактивна.

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

Всичко това трябва да задейства валидиране на вашите (неактивни) връзки и когато възникне изключение или периодът на неактивност изтече, връзките ви ще бъдат премахнати от пула.

Ако приемем, че използвате Tomcat JDBC като пул за връзки това е хубаво четиво какво и как да конфигурирате.

АКТУАЛИЗИРАНЕ: Spring Boot 2.x превключи пула за връзки по подразбиране към HikariCP вместо 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. Как да създавате и изтривате бази данни и таблици в MySQL

  2. Намерете най-честата стойност в SQL колона

  3. Как да преминете през набор от резултати на mysql

  4. GROUP_CONCAT с ограничение

  5. SQLSTATE[42000]:Синтактична грешка или нарушение на достъпа:1064 Имате грешка във вашия SQL синтаксис — PHP — PDO