Mongo连接从未发布 - Django和Mongoengine在gevent上使用gunicorn

时间:2014-05-23 16:00:12

标签: python django mongodb pymongo mongoengine

我有一个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)

我是否需要做些什么来确保最终释放未使用的连接?

谢谢,

道格

1 个答案:

答案 0 :(得分:1)

您正在寻找的功能是一个名为maxIdleTimeMS的配置选项,用于在加载峰值(以及其他内容)之后进行清理。

根据文件:

  

maxIdleTimeMS - 套接字可以空闲的最大时间(毫秒)   在关闭和丢弃之前的游泳池。有用的清理后   加载峰值。

可悲的是,这个选项目前(2015年3月)在pymongo驱动程序中没有(mongoengine在引擎盖下使用),但它正在进行中! See the relevant JIRA ticket(并且不要忘记提出问题!)。它可以在几个月内与pymongo 3.1一起使用。