sql >> Database teknologi >  >> RDS >> Mysql

Forbindelse til Db dør efter>4<24 i spring-boot jpa hibernate

Den nemmeste måde er at angive autoReconnect ejendom i JDBC-webadressen, selvom dette ikke er den anbefalede fremgangsmåde.

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

Dette kan give problemer, når du har en aktiv forbindelse, og under en transaktion sker der noget, og en genforbindelse vil ske. Det vil ikke give problemer, når forbindelsen er valideret ved starten af ​​transaktionen, og en ny forbindelse er erhvervet ved starten.

Men det er sandsynligvis bedre at aktivere validering af dine forbindelser i løbet af din ansøgnings levetid. Til dette kan du angive flere egenskaber .

Start først med at angive det maksimale antal forbindelser, du tillader for puljen. (For en læsning om at bestemme den maksimale poolstørrelse, læs dette ).

spring.datasource.max-active=10

Du ønsker måske også at angive antallet af indledende forbindelser

spring.datasource.initial-size=5

Dernæst vil du angive min. og maks. antal ledige forbindelser.

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

For at validere forbindelse skal du angive en valideringsforespørgsel og hvornår du skal validere. Som du ønsker at validere med jævne mellemrum, i stedet for når en forbindelse hentes fra poolen (dette for at forhindre afbrudte forbindelser i din pool).

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

BEMÆRK: Brugen af ​​en validation-query er faktisk frarådt, da JDBC4 har en bedre/anden måde at udføre forbindelsesvalidering på. HikariCP vil automatisk kalde JDBC-valideringsmetoden, når den er tilgængelig.

Nu hvor du også validerer, mens en forbindelse er inaktiv, skal du angive, hvor ofte du vil køre denne forespørgsel for forbindelserne, og hvornår en forbindelse anses for 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)

Alt dette burde udløse validering af dine (tomgangs)forbindelser, og når der opstår en undtagelse, eller den inaktive periode er passeret, vil dine forbindelser blive fjernet fra puljen.

Forudsat at du bruger Tomcat JDBC som forbindelsespuljen dette er en god læsning af, hvad og hvordan man konfigurerer.

OPDATERING: Spring Boot 2.x skiftede standardforbindelsespuljen til HikariCP i stedet for Tomcat JDBC.




  1. SQLite JSON_GROUP_OBJECT()

  2. ListAGG i SQLSERVER

  3. Beregn Max of Sum af et kommenteret felt over en grupperet efter forespørgsel i Django ORM?

  4. Sådan fjerner du uønskede ledende tegn fra en streng i MySQL