Comment résoudre l'erreur « Got an error reading communication packets » (Une erreur s'est produite lors de la lecture des paquets de communication) dans Amazon RDS for MySQL ?

Date de la dernière mise à jour : 06/08/2021

J'ai reçu l'erreur « Got an error reading communication packets » (Une erreur s'est produite lors de la lecture des paquets de communication) dans Amazon RDS for MySQL. Comment résoudre cette erreur ?

Brève description

Si des connexions serveur-client sont abandonnées, improprement fermées ou échouées, Amazon Relational Database Service (Amazon RDS) MySQL incrémente le compteur d'état pour aborted_clients ou aborted_connects.

Si log_error_verbosity dépasse une valeur de 2, RDS MySQL écrira les informations suivantes dans votre journal d'erreurs :

[Warning] Aborted connection xxx to db: '<database name>' user: '<user name>' host: '<host IP>' (Got an error reading communication packets)

Cet avertissement est déclenché chaque fois que le compteur d'état des valeurs métriques aborted_clients ou aborted_connects est incrémenté. Amazon RDS utilise les journaux d'erreurs de la base de données pour obtenir ces informations. Pour plus d'informations, consultez Communication errors and aborted connections (Erreurs de communication et connexions interrompues) sur le site Web du serveur MySQL.

Les facteurs qui peuvent déclencher l'avertissement de connexion interrompue incluent (mais ne sont pas limités à) ce qui suit :

  • Incompatibilité avec le client ou le pilote
  • Pare-feu ou proxies, qui peuvent fermer toute connexion inactive ou bloquer une connexion.
  • Fermeture incorrecte d'une connexion client-serveur, ce qui entraîne un nombre plus élevé de connexions en veille dans Amazon RDS for MySQL.
  • Des connexions inactives qui dépassent les seuils wait_timeout ou interactive_timeout.
  • Une application client qui met fin à une connexion de manière inappropriée.
  • Une connexion client qui dépasse le seuil de connect_timeout secondes lors de l'obtention d'un paquet de connexion.
  • La valeur du paramètre max_allowed_packet est dépassée. Si les requêtes nécessitent plus de mémoire que ce que l'instance a alloué pour Amazon RDS for MySQL, l'avertissement de connexion interrompue sera déclenché.

Résolution

Si vous recevez une erreur de connexion interrompue dans Amazon RDS for MySQL, vérifiez les valeurs de vos paramètres MySQL. Après avoir identifié la cause racine de votre problème, mettez à jour le paramètre et testez la nouvelle valeur, tout en surveillant les journaux des erreurs MySQL.

Lors du dépannage de l'erreur de connexion interrompue dans Amazon RDS, considérez les approches suivantes:

  • Vérifiez si vous utilisez les valeurs par défaut d'un groupe de paramètres Amazon RDS. Les valeurs par défaut des paramètres liés aux délais d'expiration de connectivité peuvent ne pas être appropriées pour votre instance de base de données. Pour plus d'informations sur ces paramètres, consultez la section Paramètres liés aux délais d'expiration de connectivité dans Bonnes pratiques pour la configuration des paramètres pour Amazon RDS for MySQL.
  • Définissez une valeur plus élevée pour connect_timeout pour voir si cela permet de réduire l'occurrence des messages d'erreur de connexion interrompue. Ce paramètre indique combien de temps l'instance de serveur MySQL doit attendre (en secondes) avant de répondre par une mauvaise liaison.
  • Modifiez interactive_timeout et wait_timeout. Les applications qui utilisent le regroupement de connexions (telles que Java) doivent avoir des délais d'attente qui correspondent aux paramètres du groupe de connexions.
  • Augmentez la valeur de max_allowed_packet si l'instance doit traiter de grosses requêtes. Si une ligne contient plus de données que la valeur max_allowed_packet pour le client, des erreurs sont signalées. Augmentez cette valeur si vous utilisez des colonnes BLOB de grande taille ou de longues chaînes de caractères. Pour plus d'informations, consultez la section max_allowed_packet dans Bonnes pratiques pour la configuration des paramètres pour Amazon RDS for MySQL.
  • Assurez-vous que les connexions Amazon RDS for MySQL sont correctement fermées. Avant de quitter la base de données, assurez-vous d'appeler la fonction mysql_close() à partir de l'application cliente.

Conseils de dépannage

Si vous recevez toujours le message d'erreur Connexion interrompue, essayez les conseils de dépannage suivants :

  • Activez Performance Insights pour obtenir la durée des instructions SQL à l'origine de l'avertissement.
  • Exécutez la commande tcpdump à partir de l'ordinateur qui exécute le client pour tester des échantillons de captures de paquets. Par exemple :
sudo tcpdump -vvv --interface eth0 port 3306 -W 10 -C 100

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?