Résolution du délai d'expiration de la connexion JDBC : enquête sur l'erreur Wait_Timeout
Cet article aborde un problème dans lequel une application Spring Boot utilisant JPA Hibernate avec MySQL rencontre une connexion résiliation après un délai déterminé. Le message d'erreur indique que la configuration wait_timeout du serveur MySQL a été dépassée.
Solutions possibles
Initialement, le développeur a identifié les options "testOnBorrow" et "validationQuery", mais ceux-ci ne sont pas recommandés pour résoudre le problème de délai d'attente.
Approche recommandée : configuration de la connexion Validation et comportement du pool
La solution privilégiée consiste à configurer la validation des connexions et le comportement du pool pour garantir que les connexions inactives ou problématiques sont identifiées et supprimées.
Paramètre d'URL JDBC
L'ajout du paramètre "autoReconnect" à l'URL JDBC est une solution rapide, mais elle doit être utilisée avec prudence car elle peut entraîner des problèmes. pendant les transactions actives.
spring.datasource.max-active
La définition de ce paramètre limite le nombre maximum de connexions actives dans le pool.
spring.datasource.initial-size
Spécifier le nombre de connexions initiales dans le pool.
spring.datasource.max-idle et spring.datasource.min-idle
Configuration du nombre maximum et minimum de connexions inactives .
spring.datasource.test-while-idle et spring.datasource.test-on-borrow
Ces paramètres permettent la validation de la connexion en cas d'inactivité ou lors de la récupération du pool.
spring.datasource.validation- query
Ce paramètre précise la requête utilisée pour la connexion validation.
Remarque : Utilisez une méthode de validation JDBC4 au lieu de l'option "validationQuery" si disponible.
spring.datasource.time-between-eviction- courses-millis et spring.datasource.min-evictable-idle-time-millis
Ces paramètres contrôlent la fréquence et les critères d'expulsion des connexions inactives du pool.
En implémentant ces configurations , votre application validera régulièrement les connexions et supprimera celles non valides, évitant ainsi l'erreur d'expiration du délai de connexion. Spring Boot 2.x utilise HikariCP comme pool de connexions par défaut, qui offre des fonctionnalités améliorées de gestion des connexions. Il est recommandé de consulter sa documentation pour d'autres options de configuration.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!