2014-05-23 21 views
8

ile gunicorn çalışan ben gevent işçilerle gunicorn çalışan mongoengine kullanarak bir Django uygulaması vardır. Yük altında Mongo bağlantı sayısı yaklaşık 3 bin kadar tırmanır ve asla geri iner. yük testi tamamlandıktan sonra bile, Mongo bağlantı sayısı sabit kalır. Silahın yeniden başlatılması bağlantıları serbest bırakır.Mongo bağlantıları asla piyasaya - Django ve Mongoengine gevent

Paket sürümleri

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

mongodb 2.6.0

Ben bir ortamda benim mongoengine bağlantı ayarlarını belirli django ayarları dosyası vardır: Ben için yapmanız gereken şey

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) 

var mı Kullanılmayan bağlantıların sonunda serbest kaldığından emin olun.

sayesinde

Doug

+0

Merhaba Douglas Hall, nereye bu konuda böyle bir şey deney yaptı: http://dba.stackexchange.com/questions/127658/sudden-mongodb-high-connections-queues-db-stops-responding – clopez

cevap

1

Aradığınız özelliği (diğer şeyler arasında) yük ani sonra temizlik için kullanılacak içindir maxIdleTimeMS adlı bir yapılandırma seçeneği vardır. Docs göre

:

maxIdleTimeMS - Bir yuva kapatıldı ve atılmadan önce havuzda boşta oturabilir millis maksimum süre. Bir yük başak sonra temizlik için kullanışlıdır.

Ne yazık ki, bu seçenek şu anda (2015 Mart) pymongo sürücüsü (başlık altında kullandığı mongoengine) kullanılamaz , ancak üzerinde çalıştı ediliyor! See the relevant JIRA ticket (ve konuyu upvote unutmayın!). Birkaç ay içinde pymongo 3.1 ile mevcut olmalıdır.