1

Que faire des “[Warning] Aborted connection” avec MySQL ?

twitterlinkedinmail

Un petit post sur cet avertissement que l’on rencontre bien souvent chez nos clients MySQL.
Ceux qui utilisent MySQL ont sans doute déjà croisé ce type de warning et découverts que les informations fournies par MySQL sur le sujet sont limitées (ainsi que les infos que l’on peut glaner sur le net)

Je veux parler ici d’erreurs récurrentes, qui se produisent de façon aléatoire plusieurs fois par jour, pas d’une erreur liée à un mauvais mot de passe ou à des privilèges insuffisants qui peuvent également générer ce type d’erreur.

Ce qu’en dit MySQL :

La page de documentation concernant ce problème est la suivante :

En fait, il y a deux raisons essentielles pour lesquelles MySQL est susceptible de renvoyer cette erreur : Des problèmes liés au réseau ou des problèmes liés au mode de sortie de session dans le code applicatif.
Pour ce dernier cas, attention à bien utiliser la fonction mysql_close() dans votre code applicatif.

Dans la pratique, que faire de cet avertissement ?

La première question à se poser est de savoir si ce problème affecte, d’une façon ou d’une autre, votre production.
Pour le savoir, plusieurs sources sont à votre disposition : Les utilisateurs qui peuvent vous remonter des erreurs, les logs applicatifs ou vos outils de monitoring qui clignotent trop régulièrement…

Si l’impact de cette erreur sur votre production est nulle, je vous recommande simplement de désactiver la remontée d’info la concernant via le paramètre log-warnings :

  • set global log_warnings = 1;

Attention toutefois, la manipulation de ce paramètre peut entraîner la désactivation complète de tous les warnings. Rapprochez vous de la documentation de ce paramètre pour plus d’infos :

Sinon, je vous invite à suivre le mode opératoire suivant :

  • Demander aux admins réseau de vérifier les différents composants réseau de votre architecture afin d’identifier d’éventuels problèmes
  • Vérifier votre code applicatif et la bonne utilisation de la fonction mysql_close()
  • Vérifier que vos clients MySQL ne dépassent pas le timeout de connexion défini par la variable connect_timeout
  • Augmenter la valeur du paramètre max_allowed_packet (cette dernière méthode semble d’ailleurs porter ses fruits chez un grand nombre d’utilisateurs)

Si ces différentes opérations ne permettent pas d’identifier ou de régler votre problème, essayez d’appliquer chaque point préconisé dans la documentation mentionnée en début d’article et croisez les doigts !

N’hésitez pas à me faire un retour d’expérience sur ce point à travers les commentaires. Merci.

Bonne fin de semaine
Cédric.

Continuez votre lecture sur le blog :

twitterlinkedinmail

Benjamin VESAN

Un commentaire

  1. Pour désactiver les logs, n’est-ce pas plutôt log-warnings=0, c’est à dire la valeur par défaut ?

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.