Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL gibt nach Leerlaufzeit auf dem node.js-Server einen ECONNRESET-Lesefehler aus

Ich habe die Leute von node-mysql auf ihrer Github-Seite kontaktiert und bekam einige feste Antworten.

  1. MySQL beschneidet in der Tat ungenutzte Verbindungen. Es gibt eine MySQL-Variable „wait_timeout“, die die Anzahl der Sekunden vor dem Timeout festlegt, und der Standardwert ist 8 Stunden. Wir können den Standardwert viel größer einstellen. Verwenden Sie show variables like 'wait_timeout'; , um Ihre Timeout-Einstellung anzuzeigen und set wait_timeout=28800; ändern.

  2. Laut dieser Ausgabe , node-mysql löscht keine Pool-Verbindungen nach dieser Art von Verbindungsunterbrechungen. Die Modulentwickler empfahlen die Verwendung eines Heartbeats, um die Verbindung am Leben zu erhalten, wie z. B. das Aufrufen von SELECT 1; in einem Intervall. Sie empfahlen auch die Verwendung des Node-Pool-Moduls und die Option "idleTimeoutMillis" zum automatischen Löschen von Leerlaufverbindungen.