Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens une erreur « lire ECONNRESET » sur un serveur Node.js inactif connecté à MySQL ?

Pourquoi est-ce que j'obtiens une erreur « lire ECONNRESET » sur un serveur Node.js inactif connecté à MySQL ?

DDD
DDDoriginal
2024-11-26 14:35:10782parcourir

Why Am I Getting

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn