Mysql
 sql >> Base de données >  >> RDS >> Mysql

L'application Spring perd la connexion à MySql après 8 heures. Comment configurer correctement ?

La réponse courte est que cela devrait suffire. DBCP prend en charge le test de la connexion lors de l'emprunt à partir du pool de connexions (par défaut), mais prend également en charge le test au retour et le test en cas d'inactivité.

Cela vaut également la peine de comprendre ce qui peut mal se passer ici. Il semble que quelque chose entre votre serveur Tomcat et la base de données abandonne la connexion inactive après un délai d'attente (comme un routeur ou un pare-feu). Le problème avec cela est que Tomcat pense qu'il a toujours une connexion valide, essaie de travailler avec la connexion et échoue, mais maintient la connexion active et la renvoie au pool. Désormais, toute nouvelle tentative de communication avec la base de données échouera si la même connexion interrompue est fournie par le pool.

Je pense que c'était l'excellent "Release It!" de Michael Nygard! livre qui a décrit ce scénario dans l'une de ses histoires des tranchées.

Vous voudrez également examiner comment MySQL nettoie les connexions mortes, car lorsque Tomcat perd la connexion après 8 heures, la base de données ne sera pas non plus au courant de l'échec de la connexion.

Un dernier point, si vous utilisez Tomcat 7, passez à leur nouvelle connexion piscine car il offre de meilleures performances que DBCP.