Wie stellt man in MongoDB sicher, dass alle Verbindungen geschlossen werden, wenn close () manchmal nicht aufgerufen wird?

8

Ich verwende node.js & amp; MongoDB, und ich habe asynchronen Code ( async.queue ), um MongoDB zu aktualisieren.

Wenn alle Aufgaben in der Warteschlange beendet sind, rufe ich

an %Vor%

Daher sind alle von den Aufgaben verwendeten Verbindungen geschlossen. In seltenen Fällen habe ich jedoch festgestellt, dass offene Verbindungen in mongoDB-Protokollen nie geschlossen sind. Nach ein paar Wochen wird es also Hunderte von Verbindungen geben, die niemals geschlossen werden.

Ich habe recherchiert und herausgefunden, dass ich vielleicht diese Option maxIdleTimeMS einstellen sollte, aber diese Option wird nicht von allen Treibern unterstützt (der node.js-Treiber unterstützt diese Option nicht).

Auch wenn ich meinen Code optimieren kann, um sicherzustellen, dass keine Bedingung dafür besteht, dass close() nicht aufgerufen wird. Ich frage mich immer noch, ob eine App aus irgendeinem Grund db.close() nicht aufruft (oder als zusätzliche Versicherung), gibt es eine Möglichkeit, hängende Verbindungen in MongoDB zu verhindern?

    
Joe Huang 23.04.2016, 12:36
quelle

1 Antwort

2

nodejs mongodb-Treiber löscht die Verbindung im Leerlauf

Umgang mit MongoDB trennt / verbindet sich erneut vom Knoten

sieht nach einiger Zeit im Leerlauf aus, Verbindung ist geschlossen.

Es ist nicht klar, welcher Treiber verwendet wird, aber in einem dieser Post gibt es einen Link zu docs:

Ссылка

Setzen Sie KeepAlive auf 0, und Ihre Verbindung wird beendet ...

    
Michał Zaborowski 30.04.2016 16:02
quelle

Tags und Links