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 ou Aurora MySQL-Compatible ?
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). Je souhaite résoudre cette erreur dans une instance de base de données Amazon Relational Database Service (Amazon RDS) pour MySQL ou Amazon Aurora, édition compatible avec MySQL.
Brève description
Si des connexions serveur-client sont abandonnées, improprement fermées ou échouées, Amazon RDS incrémente le compteur d'état pour aborted_clients ou aborted_connects. Le paramètre aborted_clients décrit le nombre de connexions qui ont été abandonnées parce que le client est décédé sans avoir fermé correctement la connexion. Le paramètre aborted_connects décrit le nombre de tentatives infructueuses de connexion au serveur MySQL.
log_error_verbosity indique le niveau de détail de la gestion des événements destinés au journal des erreurs. Si la valeur de ce paramètre dépasse la valeur 2, RDS pour MySQL écrit ces informations dans votre journal des 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 RDS for MySQL.
- Une application client qui met fin à une connexion incorrectement. Si les connexions restent inactives pendant un certain temps, MySQL ferme ces connexions de force. Le message de connexion abandonnée s'affiche alors.
- Des connexions inactives qui dépassent les seuils wait_timeout ou interactive_timeout.
- Une connexion client qui dépasse le seuil de secondes connect_timeout lors de l'obtention d'un paquet de connexion.
- Valeurs insuffisantes pour des paramètres tels que net_write_timeout et net_read_timeout.
- La valeur du paramètre max_allowed_packet est dépassée. Si la valeur est trop petite ou si les requêtes nécessitent plus de mémoire que celle allouée à RDS pour MySQL, cela déclenche l'avertissement de Connexion abandonnée.
Solution
Si vous recevez une erreur de connexion interrompue dans RDS for MySQL ou Aurora MySQL-Compatible, 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, 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.
- Modifier interactive_timeout et**wait_timeout**. Les applications qui utilisent le regroupement de connexions (comme 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.
- Augmentez les valeurs net_write_timeout et net_read_timeout. Remarque : Ces valeurs peuvent être définies sur la même valeur que wait_timeout.
- Assurez-vous que les connexions RDS pour MySQL ou compatible avec Aurora 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. Pour en savoir plus sur la compatibilité avec Aurora MySQL, consultez la section Surveillance de la charge de base de données avec Performance Insights sur Amazon Aurora.
- Activez la journalisation lente des requêtes sur votre instance de base de données Amazon RDS ou Aurora MySQL. Cela capture et enregistre toutes les requêtes exécutées pendant une durée supérieure à long_query_time, qui est par défaut de 10 secondes. Pour plus d'informations, reportez-vous à Comment activer et surveiller les journaux d'une instance Amazon RDS for MySQL ?
- Envisagez d'activer les Journaux de flux VPC. Les journaux de flux VPC vous permettent de voir de quel côté (client/serveur) la connexion est fermée.
- Assurez-vous que votre application a correctement fermé la connexion depuis MySQL.
- 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
Informations connexes
Vidéos associées

Contenus pertinents
- demandé il y a un moislg...
- demandé il y a un moislg...
- demandé il y a un moislg...
- demandé il y a 8 jourslg...
- demandé il y a 2 moislg...
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 24 jours
- AWS OFFICIELA mis à jour il y a 3 ans