sql >> Databasteknik >  >> RDS >> Mysql

Anslutning till Db dör efter>4<24 i spring-boot jpa hibernate

Det enklaste sättet är att ange autoReconnect egenskap i JDBC-webbadressen, även om detta inte är det rekommenderade tillvägagångssättet.

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

Detta kan ge problem när du har en aktiv anslutning och under en transaktion händer något och en återanslutning kommer att hända. Det ger inga problem när anslutningen valideras i början av transaktionen och en ny anslutning förvärvas i början.

Men det är förmodligen bättre att aktivera validering av dina anslutningar under hela din ansökans livstid. För detta kan du ange flera egenskaper .

Börja först med att ange maximalt antal anslutningar du tillåter för poolen. (Läs detta för att läsa om hur man bestämma den maximala poolstorleken ).

spring.datasource.max-active=10

Du kanske också vill ange antalet initiala anslutningar

spring.datasource.initial-size=5

Därefter vill du ange min och max antal lediga anslutningar.

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

För att validera anslutningen måste du ange en valideringsfråga och när du ska validera. Som du vill validera med jämna mellanrum, istället för när en anslutning hämtas från poolen (detta för att förhindra brutna anslutningar i din pool).

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

OBS: Användningen av en validation-query är faktiskt avskräckt med eftersom JDBC4 har ett bättre/annan sätt att göra anslutningsvalidering. HikariCP anropar automatiskt JDBC-valideringsmetoden när den är tillgänglig.

Nu när du också validerar medan en anslutning är inaktiv måste du ange hur ofta du vill köra den här frågan för anslutningarna och när en anslutning anses vara inaktiv.

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

Allt detta bör utlösa validering av dina (lediga) anslutningar och när ett undantag inträffar eller den inaktiva perioden har passerat kommer dina anslutningar att tas bort från poolen.

Förutsatt att du använder Tomcat JDBC som anslutningspool detta är en trevlig läsning om vad och hur man konfigurerar.

UPPDATERING: Spring Boot 2.x bytte standardanslutningspoolen till HikariCP istället för Tomcat JDBC.




  1. Effektiv övervakning av MySQL-replikering med SCUMM Dashboards:Del 2

  2. Hybrid OLTP/Analytics Databas Workloads:Replikera MySQL-data till ClickHouse

  3. SQLite Tutorial:Allt du behöver veta

  4. Hur man aktiverar arkivloggningsläge i Oracle Database 19c