Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment puis-je résoudre l'erreur « Got an error reading communication packets » dans Amazon RDS for MySQL ou Aurora compatible avec MySQL ?
J’utilise une instance de base de données Amazon Relational Database Service (Amazon RDS) for MySQL ou Amazon Aurora édition compatible avec MySQL. J'ai reçu le message d'erreur « Got an error reading communication packets ».
Brève description
En cas d'interruption, de fermeture incorrecte ou d'échec des connexions serveur-client, Amazon RDS incrémente le compteur de statut pour aborted_clients ou aborted_connects. Le paramètre aborted_clients décrit le nombre de connexions qu'Amazon RDS a annulées parce que le client est mort et n'a pas correctement fermé la connexion. Le paramètre aborted_connects indique le nombre de tentatives infructueuses de connexion au serveur MySQL.
Si la valeur de l'un de ces paramètres augmente, l'erreur suivante s'affiche dans vos journaux :
« [Warning] Aborted connection abc to db: 'database name' user: 'user name' host: 'host IP' (Got an error reading communication packets) ».
Si la valeur de log_error_verbosity est supérieure à 2, l'erreur précédente s’affiche également. Le paramètre log_error_verbosity spécifie la verbosité nécessaire pour gérer les événements destinés au journal des erreurs.
Pour en savoir plus, consultez la page B.3.2.9 Erreurs de communication et connexions interrompues sur le site Web de MySQL Server.
Les facteurs suivants peuvent provoquer l'erreur Error reading communications packets :
- Une incompatibilité au niveau du client ou du pilote.
- Des pare-feux ou des proxys, qui peuvent fermer toutes les connexions inactives ou bloquer une connexion.
- Une connexion client-serveur qui est incorrectement fermée et entraîne une augmentation du nombre de connexions en veille dans RDS for MySQL.
- Une application client qui résilie une connexion de manière incorrecte.
Remarque : MySQL ferme de force les connexions inactives de longue durée. - Des connexions inactives qui dépassent les seuils wait_timeout ou interactive_timeout.
- Une connexion client qui dépasse le seuil de secondes pour connect_timeout lors de l'obtention d'un paquet de connexion.
- Des valeurs insuffisantes pour des paramètres tels que net_write_timeout et net_read_timeout.
- Une valeur de paramètre max_allowed_packet est dépassée.
Remarque : Si la valeur est trop petite ou si les requêtes nécessitent plus de mémoire que celle allouée à Amazon RDS for MySQL, le message d'erreur précédent s'affiche.
Résolution
Vérifiez les valeurs des paramètres de délai d'expiration de la connectivité. Après avoir identifié la cause racine de votre problème, modifiez la valeur du paramètre en fonction du problème que vous avez identifié. Puis, surveillez les journaux d'erreurs MySQL pendant que vous testez la nouvelle valeur.
Résoudre les problèmes liés à votre configuration
Vérifiez si vous utilisez les valeurs par défaut du groupe de paramètres Amazon RDS. Vous devrez peut-être modifier la valeur du délai de connectivité par défaut pour votre instance de base de données. Pour en savoir plus, consultez la section Paramètres liés aux délais d’expiration de la connectivité de la rubrique Bonnes pratiques de configuration des paramètres d'Amazon RDS for MySQL, partie 3 : Paramètres liés à la sécurité, à la gérabilité opérationnelle et au délai d'expiration de la connectivité.
Définissez une valeur plus élevée pour connect_timeout afin de vérifier si cette valeur réduit l'occurrence de l'erreur Error reading communications packets. Le paramètre connect_timeout définit le nombre de secondes que l'instance de base de données du serveur MySQL doit attendre avant que l'instance de base de données ne réponde par une mauvaise liaison. Pour en savoir plus, consultez la page connect_timeout sur le site Web de MySQL.
Vous pouvez également modifier les paramètres interactive_timeout et wait_timeout. Pour plus d'informations sur ces paramètres, consultez la page wait_timeout ou interactive_timeout sur le site Web de MySQL. Les applications qui utilisent un regroupement de connexions, tel que Java, doivent disposer de délais d'expiration correspondant aux paramètres du regroupement de connexions.
Si l'instance doit gérer de grandes requêtes, de grandes colonnes BLOB ou de longues chaînes, augmentez la valeur de max_allowed_packet. Si une ligne contient plus de données que la valeur max_allowed_packet, un message d'erreur s’affiche. Pour en savoir plus, consultez la section max_allowed_packet de la rubrique Bonnes pratiques de configuration des paramètres d'Amazon RDS for MySQL, partie 3 : Paramètres liés à la sécurité, à la gérabilité opérationnelle et au délai d'expiration de la connectivité. Ou bien consultez la page max_allowed_packet sur le site Web de MySQL. Aussi, augmentez les valeurs de net_write_timeout et net_read_timeout.
Remarque : Vous pouvez définir net_write_timeout et net_read_timeout sur la même valeur que wait_timeout. Pour plus d'informations, consultez la page net_write_timeout et net_read_timeout sur le site Web de MySQL.
Vérifiez que les connexions RDS for MySQL ou Aurora compatible avec MySQL sont correctement fermées. Avant de quitter la base de données, appelez la fonction mysql_close() à partir de l’application client.
Résolution de problèmes avancés
Si le message d'erreur Error reading communications packets persiste, effectuez l'une des actions suivantes :
- Activez Performance Insights pour obtenir la période des instructions SQL qui rencontrent des problèmes. Pour Aurora MySQL, consultez la section Activation et désactivation de Performance Insights pour Aurora.
- Activez les journaux de requêtes lentes sur votre instance de base de données Amazon RDS ou Aurora compatible avec MySQL pour enregistrer les requêtes qui s'exécutent pendant une durée supérieure à la valeur de long_query_time.
Remarque : La valeur de long_query_time est de 10 secondes. - Activez Amazon Virtual Private Cloud (Amazon VPC) Flow Logs pour savoir si le serveur ou le client a fermé la connexion.
- Vérifiez que votre application a correctement fermé la connexion depuis MySQL.
- Exécutez la commande tcpdump à partir de la machine qui exécute le client pour tester des exemples de captures de paquets :
sudo tcpdump -vvv --interface eth0 port 3306 -W 10 -C 100
Informations connexes
Comment modifier les valeurs d'un groupe de paramètres de base de données Amazon RDS ?
Vidéos associées


Contenus pertinents
- demandé il y a 5 moislg...
- L3 Troubleshooting Workshop - Error when trying to increase the size of the Application settings VHDdemandé il y a un moislg...
- demandé il y a un anlg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a un mois
- AWS OFFICIELA mis à jour il y a 4 ans
- AWS OFFICIELA mis à jour il y a 4 mois