Maison  >  Article  >  base de données  >  Pourquoi mon serveur Node.js perd-il sa connexion MySQL après avoir été inactif ?

Pourquoi mon serveur Node.js perd-il sa connexion MySQL après avoir été inactif ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-13 01:08:02737parcourir

Why does my Node.js server lose its MySQL connection after being idle?

MySQL se déconnecte après un temps d'inactivité du serveur Node.js : déterminer la cause et résoudre efficacement

Les développeurs Node.js rencontrent souvent le "lire ECONNRESET " erreur lors de l'utilisation du module node-mysql pour se connecter à MySQL. Cette erreur se produit généralement après que le serveur Node est resté inactif pendant un certain temps.

Détermination de la cause

Cette erreur suggère que la connexion entre Node et MySQL a été déconnecté. MySQL a une limite de durée de vie de connexion par défaut, qui peut être configurée via la variable "wait_timeout". La valeur par défaut est de 8 heures. Si le temps d'inactivité dépasse cette limite, MySQL élaguera la connexion.

Résoudre le problème

Pour résoudre ce problème, deux approches peuvent être adoptées :

  1. Augmenter la durée de vie de la connexion MySQL Limite :

    • Augmentez la variable « wait_timeout » à une valeur plus élevée, par exemple 28 800 secondes (8 heures). Cela prolongera la durée de vie de la connexion et évitera les déconnexions dues au temps d'inactivité.
  2. Utilisez le module Heartbeat ou Node-Pool :

    • Utilisez une requête de battement de cœur (par exemple, "SELECT 1;") pour maintenir la connexion active périodiquement.
    • Utilisez le module de pool de nœuds avec l'option "idleTimeoutMillis" pour supprimer automatiquement les connexions inactives du pool.

Autres considérations

Alors que d'autres des facteurs, tels que des problèmes de base de données ou de réseau, peuvent également contribuer à l'erreur « lecture ECONNRESET », augmentant la limite de durée de vie de la connexion MySQL ou implémentant des mécanismes de pulsation avec le pool de nœuds devrait résoudre le problème dans la plupart des cas. Si l'erreur persiste, envisagez de résoudre d'autres causes potentielles.

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