Maison > base de données > tutoriel mysql > le corps du texte

Pourquoi Tomcat rencontre-t-il des fuites de mémoire avec les pilotes JDBC et les minuteries d'annulation des instructions MySQL ?

DDD
Libérer: 2024-11-08 08:40:02
original
870 Les gens l'ont consulté

Why Does Tomcat Experience Memory Leaks with JDBC Drivers and MySQL Statement Cancellation Timers?

Fuite de mémoire Tomcat : résolution des erreurs de minuterie d'annulation du pilote JDBC et de l'instruction MySQL

Dans Tomcat 7.x, les utilisateurs peuvent rencontrer des avertissements de fuite de mémoire dans le journal catalina.out à l'arrêt. Ces avertissements indiquent que le pilote JDBC n'a pas réussi à se désinscrire correctement et qu'un thread nommé « Minuterie d'annulation d'instruction MySQL » est toujours en cours d'exécution.

Erreur de désenregistrement du pilote JDBC

Malgré la configuration la méthode de destruction pour le DataSource, le message d'erreur suggère que le pilote JDBC (com.mysql.jdbc.Driver) n'a pas été non enregistré par l'application Web. Comme indiqué dans le message d'erreur, Tomcat désenregistrera de force le pilote pour éviter une fuite de mémoire.

Pour éviter ce problème, il est recommandé de déplacer le connecteur/pilote MySQL JDBC vers le dossier tomcat/lib au lieu d'inclure pendant la GUERRE. Cela garantit que le connecteur/pilote n'est chargé qu'une seule fois par le chargeur de classe Tomcat, évitant ainsi plusieurs instanciations et garantissant un nettoyage approprié à l'arrêt. Le thread « MySQL Statement Cancellation Timer » est créé par le pilote JDBC pour annuler les instructions en attente lorsque la connexion est fermée. Si ce thread n'est pas arrêté correctement, cela peut entraîner une fuite de mémoire.

Pour résoudre ce problème, assurez-vous que la connexion JDBC est correctement fermée avant l'arrêt de l'application Web. Ceci peut être réalisé en utilisant un bloc final ou en utilisant une instruction try-with-resources.

Considérations supplémentaires

Vérifiez que le connecteur MySQL JDBC est à jour.

Vérifiez la configuration de Tomcat pour vous assurer que la propriété unloadDelay du pilote JDBC est définie sur une valeur raisonnable. valeur.

Surveillez l'utilisation de la mémoire de Tomcat pour confirmer que la fuite de mémoire a été résolue.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal