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?
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 ...