Ich habe die Leute von node-mysql auf ihrer Github-Seite kontaktiert und bekam einige feste Antworten.
-
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 undset wait_timeout=28800;
ändern. -
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.