Comment résoudre l'erreur « MySQL server has gone away » (Perte de connexion au serveur MySQL) lors de la connexion à mon instance de base de données MySQL Amazon RDS ?

Date de la dernière mise à jour : 20/12/2019

J'ai essayé d'interroger une instance de base de données Amazon Relational Database Service (Amazon RDS) qui exécute MySQL, et j'ai reçu l'un des messages d'erreur suivants : « MySQL server has gone away » (Perte de connexion au serveur MySQL) ou « Lost connection to server during query » (Connexion au serveur perdue pendant la requête).

Brève description

Si le serveur a expiré et a interrompu la connexion, vous pouvez recevoir l'une des erreurs suivantes :

  • CR_SERVER_GONE_ERROR : le client n'a pas pu envoyer de question au serveur.
  • CR_SERVER_LOST : le client n'a pas reçu d'erreur lors de l'écriture sur le serveur, mais n'a pas reçu de réponse complète (ou aucune réponse) à la question.

Pour plus d'informations, consultez la section Perte de connexion au serveur MySQL dans la documentation MySQL.

Résolution

Consultez les causes suivantes et les résolutions associées à ces erreurs :

  • Si une connexion est inactive trop longtemps, la connexion peut être interrompue de manière incorrecte à partir du client. Afin de résoudre ce problème, vérifiez que les délais d'expiration de l'application sont inférieurs aux délais d'expiration MySQL, et assurez-vous que vos applications ferment les connexions inactives.
  • Si une connexion expire, augmentez les délais d'expiration pour MySQL en augmentant les paramètres wait_timeout et interactive_timeout à l'aide d'un groupe de paramètres personnalisés. Pour plus d'informations, consultez la section Utilisation des groupes de paramètres de base de données.
  • Si la requête qui génère l'erreur récupère un large ensemble de données, augmentez le paramètre de taille max_allowed_packet à l'aide d'un groupe de paramètres personnalisés. Pour plus d'informations, consultez la section Modification des paramètres dans un groupe de paramètres de base de données.
  • Si l'erreur se produit uniquement lors du renvoi de larges ensembles de données, le client peut utiliser une valeur MTU élevée de 9001. Afin de résoudre ce problème, réduisez la valeur de la MTU TCP/IP du client. Pour plus d'informations sur la modification de la valeur MTU de votre client, consultez la section Configuration de la MTU d'une instance.
  • Si des paramètres init_connect sont définis sur une valeur qui n'autorise pas le traitement du paramètre, les connexions client associées peuvent échouer. Veillez à ce que tous les paramètres init_connect soient traités correctement. Vérifiez que les utilisateurs disposent des autorisations EXECUTE pour toutes les procédures référencées en tant que paramètre init_connect.
  • Si toutes les connexions sont abandonnées simultanément, vérifiez que les autres connexions fonctionnent toujours lorsque ce problème se produit. Afin de résoudre ce problème, assurez-vous que l'instance de base de données MySQL ne se bloque pas ou n'échoue pas en consultant les événements Amazon RDS et en vérifiant vos journaux d'erreurs MySQL.