Maison >base de données >tutoriel mysql >Pourquoi mes connexions à la base de données Spring Boot sont-elles interrompues après une inactivité et comment puis-je l'empêcher ?

Pourquoi mes connexions à la base de données Spring Boot sont-elles interrompues après une inactivité et comment puis-je l'empêcher ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-06 00:32:10447parcourir

Why Are My Spring Boot Database Connections Dropping After Inactivity, and How Can I Prevent It?

Connexion à la base de données interrompue au-delà du délai défini dans Spring-Boot

Les connexions à une base de données dans une application Spring-Boot utilisant JPA et Hibernate peuvent être perdu si le temps entre les interactions dépasse une limite spécifique. Ce problème est souvent accompagné d'un message d'erreur indiquant des problèmes de connexion dus au dépassement de la valeur "wait_timeout" du serveur.

Pour résoudre ce problème, l'utilisation des propriétés testOnBorrow et validationQuery de Spring est déconseillée. Au lieu de cela, une solution plus robuste consiste à configurer les paramètres suivants :

  • spring.datasource.url = jdbc:mysql://localhost:3306/test?autoReconnect=true : Activer la reconnexion automatique dans le JDBC URL.
  • spring.datasource.test-while-idle=true : tester les connexions pendant qu'elles sont ralenti.
  • spring.datasource.test-on-borrow=true : tester les connexions avant qu'elles ne soient empruntées au pool.
  • spring.datasource.validation-query=SELECT 1 : utiliser une validation requête pour vérifier la validité de la connexion.
  • spring.datasource.time-between-eviction-runs-millis=5000 : spécifiez la fréquence de contrôles de validation des connexions.
  • spring.datasource.min-evictable-idle-time-millis=60000 : Définissez le délai d'inactivité après lequel les connexions seront vérifiées et supprimées du pool.

Pour éviter d'éventuels problèmes de connexions actives lors des transactions, il est recommandé de valider les connexions en début de transaction et d'acquérir une nouvelle connexion si nécessaire.

Ces configurations Les paramètres permettront une validation régulière des connexions et empêcheront les connexions obsolètes de s’accumuler dans le pool. En conséquence, la connexion à la base de données doit rester stable même pendant de longues périodes d'inactivité.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn