Erreur MySQL « lire ECONNRESET » sur le serveur Node.js inactif : causes et solutions
Introduction
La connexion d'un serveur Node.js à MySQL via le module node-mysql peut rencontrer des défis lorsque le temps d'inactivité arrive pour lire les erreurs ECONNRESET.
Question 1 : Déconnexions de connexion
Oui, le problème semble provenir du fait que MySQL élague les connexions inactives en raison de son paramètre wait_timeout. La limite par défaut de 8 heures peut expirer après avoir laissé le serveur inactif pendant plusieurs heures.
Question 2 : Limitations du pool de connexions
Bien que node-mysql gère les pools de connexions, il peut ne pas détecter les déconnexions jusqu'à ce qu'une requête soit tentée. Ce défaut de conception rend l'erreur inévitable lors de la première requête post-inactivité.
Question 3 : Causes externes
Bien que les erreurs de lecture ECONNRESET soient courantes, il vaut la peine d'envisager d'autres potentiels. causes. Cependant, des investigations plus approfondies indiquent un problème de délai d'attente MySQL plutôt que des facteurs externes.
Résolution
1. Augmentez le délai d'attente MySQL :
Définissez la variable MySQL wait_timeout sur une valeur plus grande (par exemple, 28 800 secondes pendant 8 heures) pour empêcher l'élagage de la connexion.
2. Utilisez les requêtes Heartbeat :
Exécutez une requête périodique (par exemple, SELECT 1 ;) pour maintenir la connexion active et empêcher l'élagage.
3. Implémenter l'élagage des connexions inactives :
Utilisez le module de pool de nœuds avec son option ralentieTimeoutMillis pour élaguer automatiquement les connexions inactives.
Conclusion
Par en traitant du paramètre de délai d'attente MySQL et en améliorant la gestion des connexions dans node-mysql, les développeurs peuvent atténuer les erreurs de lecture ECONNRESET sur les serveurs Node.js inactifs. Il est également prudent de prendre en compte les causes externes potentielles, mais dans ce cas, le wait_timeout de MySQL semble être le principal coupable.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!