Ich habe eine Django-Anwendung mit Mongoengine, die auf Gunicorn mit Gevent-Mitarbeitern läuft. Unter Last klettert die Anzahl der Mongo-Verbindungen auf etwa 3 Tausend und geht nie wieder runter. Auch nach dem Lasttest bleibt die Anzahl der Mongo-Verbindungen konstant. Ein Neustart von gunicorn gibt die Verbindungen frei.
Paketversionen
%Vor%mongodb 2.6.0
Ich habe meine mongoengine Verbindungseinstellungen in einer umweltspezifischen django Einstellungsdatei:
%Vor%Gibt es etwas, das ich tun muss, um sicherzustellen, dass nicht verwendete Verbindungen schließlich freigegeben werden?
Danke,
Doug
Die Funktion für Sie suchen, ist ein Konfigurationsoption maxIdleTimeMS
genannt, die zur Reinigung nach Lastspitzen werden sollten verwendet werden (unter anderem).
Laut den Dokumenten:
maxIdleTimeMS - maximale Zeit in Millisekunden, in der ein Socket im Leerlauf stehen kann Pool vor dem Schließen und Ausrangieren. Nützlich zum Aufräumen nach einem Lastspitze.
Leider ist diese Option zur Zeit (März 2015) im pymongo Treiber nicht verfügbar (die mongoengine unter der Haube verwendet), aber es ist in Arbeit! Siehe entsprechende JIRA Ticket (und vergessen Sie nicht, das Problem zu upvote!). Es sollte in einigen Monaten mit Pymongo 3.1 verfügbar sein.
Tags und Links python django mongodb pymongo mongoengine