Mongo-Verbindungen wurden nie veröffentlicht - Django und Mongoengine laufen auf Gunicorn mit gevent

8

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

    
Douglas Hall 23.05.2014, 16:00
quelle

1 Antwort

1

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.

    
Andrei Bârsan 04.03.2015 10:30
quelle