2014-05-23 7 views
8

Ich habe eine Django-Anwendung mit Mongoengine läuft auf Gunicorn mit gevent Arbeiter. 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 löst die Verbindungen.Mongo-Verbindungen nie veröffentlicht - Django und Mongoengine läuft auf Gunicorn mit gevent

Paketversionen

gunicorn==0.17.4 
mongoengine==0.8.7 
pymongo==2.7 

mongodb 2.6.0

Ich habe meine mongoengine Verbindungseinstellungen in einer Umgebung spezifische django Einstellungsdatei:

MONGO_DATABASES = { 
    'default': { 
     'DB': '****', 
     'HOST': ***********:27017', 
     'PORT': 27017 
    } 
} 

from gevent import monkey 
monkey.patch_all() 
from mongoengine import connect 
connect(MONGO_DATABASES['default']['DB'], host=MONGO_DATABASES['default']['HOST'],  port=MONGO_DATABASES['default']['PORT'], max_pool_size=100) 

Gibt es etwas, was ich tun müssen, stellen Sie sicher, dass nicht verwendete Verbindungen schließlich freigegeben werden?

Danke,

Doug

+0

Hallo Douglas Hall, haben Sie experimentiert so etwas wie dieses Problem: http://dba.stackexchange.com/questions/127658/sudden-mongodb-high-connections-queues-ddb-stops-responding – clopez

Antwort

1

Die Funktion die Sie suchen, ist eine Konfigurationsoption maxIdleTimeMS genannt, die zur Reinigung nach Lastspitzen werden soll verwendet werden (unter anderem).

Nach der Dokumentation:

maxIdleTimeMS - maximale Zeit in Millis eine Buchse kann, bevor sie geschlossen und verworfen in dem Pool untätig herumsitzen. Nützlich für die Reinigung nach einer Lastspitze.

Leider ist diese Option zur Zeit (März 2015) nicht im pymongo Treiber (die mongoengine unter der Haube verwendet), aber es funktioniert auf Wesen! See the relevant JIRA ticket (und vergessen Sie nicht, das Problem zu verbessern!). Es sollte in einigen Monaten mit Pymongo 3.1 verfügbar sein.

Verwandte Themen