2014-05-23 4 views
8

와 gunicorn에서 실행 내가 gevent 노동자 gunicorn에서 실행 mongoengine를 사용하여 장고 응용 프로그램이 있습니다. 부하가, 몽고 연결 수는 약 3,000까지 올라 결코 다시 내려 간다. 부하 테스트가 완료된 후에도, 몽고 연결의 수는 일정하게 유지됩니다. gunicorn을 다시 시작하면 연결이 해제됩니다.몽고의 연결이 해제되지 않습니다 - 장고와 Mongoengine이 gevent

패키지 버전

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

MongoDB를 2.6.0

나는 환경에서 내 mongoengine 연결 설정 특정 장고의 설정 파일이 : I가해야 할 일이

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) 

거기를 사용되지 않는 연결이 결국 해제되는지 확인하십시오.

감사합니다,

더그

+0

안녕 더글라스 홀, 어디이 문제 같은 것을 실험을했다 : http://dba.stackexchange.com/questions/127658/sudden-mongodb-high-connections-queues-db-stops-responding – clopez

답변

1

당신이 찾고있는이 기능은 (무엇보다도)로드 스파이크 후 청소에 사용하기위한 것입니다 maxIdleTimeMS라는 구성 옵션입니다. 워드 프로세서에 따르면

:

maxIdleTimeMS - 소켓이 닫혀 폐기되기 전에 풀에서 유휴 수 밀리의 최대 시간. 부하 스파이크 후 청소에 유용합니다.

슬프게도,이 옵션은 현재 (2015 월)에 pymongo 드라이버 (후드 사용하는 mongoengine)에서 사용할 수 없습니다 이지만, 작업중인입니다! See the relevant JIRA ticket (그리고 문제를 찬성 투표하는 것을 잊지 마세요!). 몇 달 안에 pymongo 3.1에서 사용할 수 있어야합니다.

관련 문제