我有一个django应用程序使用mongoengine在gunicorn上运行gevent worker。在负载下,mongo连接数量攀升至约3千,并且永远不会下降。即使在负载测试完成后,mongo连接的数量也保持不变。重新启动gunicorn会释放连接。
包版本
gunicorn==0.17.4
mongoengine==0.8.7
pymongo==2.7
mongodb 2.6.0
我在特定环境的django设置文件中有我的mongoengine连接设置:
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 :(得分:1)
您正在寻找的功能是一个名为maxIdleTimeMS
的配置选项,用于在加载峰值(以及其他内容)之后进行清理。
根据文件:
maxIdleTimeMS - 套接字可以空闲的最大时间(毫秒) 在关闭和丢弃之前的游泳池。有用的清理后 加载峰值。
可悲的是,这个选项目前(2015年3月)在pymongo驱动程序中没有(mongoengine在引擎盖下使用),但它正在进行中! See the relevant JIRA ticket(并且不要忘记提出问题!)。它可以在几个月内与pymongo 3.1一起使用。