2014-05-23 6 views
8

Mam aplikację django wykorzystującą mongoengine działające na gunicorn z robotnikami geven. Pod obciążeniem liczba połączeń mongo wzrasta do około 3 tysięcy i nigdy nie spada. Nawet po zakończeniu testu obciążenia liczba połączeń mongo pozostaje stała. Ponowne uruchomienie gunicorn zwalnia połączenia.Połączenia Mongo nigdy nie zostały wypuszczone - Django i Mongoengine działające na gunicorn z geventem

wersji pakietów

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

MongoDB 2.6.0

Mam ustawienia połączenia mongoengine w środowisku konkretnego pliku ustawień Django:

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) 

Czy jest coś, co trzeba zrobić, aby upewnić się, że nieużywane połączenia zostaną ostatecznie zwolnione?

Dzięki,

Doug

+0

Witam, Douglas Hall, czy ty eksperymentowałeś z czymś takim jak ten problem: http://dba.stackexchange.com/questions/127658/sudden-mongodb-high-connections-queues-db-stops-responding – clopez

Odpowiedz

1

Funkcja szukasz jest opcja konfiguracji nazywa maxIdleTimeMS, który ma być używany do czyszczenia po skoki obciążenia (między innymi).

Zgodnie z docs:

maxIdleTimeMS - maksymalny czas w Millis gniazdo może siedzieć bezczynnie w basenie przed zamknięte i wyrzucić. Przydatny do czyszczenia po ostrzu ładowania w postaci .

Niestety, opcja ta jest obecnie (marzec 2015) niedostępna w sterowniku pymongo (który mongoengine używa pod maską), ale jest w trakcie opracowywania! See the relevant JIRA ticket (i nie zapomnij o awansie!). Powinien być dostępny z pymongo 3.1 w ciągu kilku miesięcy.

Powiązane problemy