主管Django Gunicorn Gevent内存使用

时间:2013-02-26 07:54:45

标签: django ubuntu gevent gunicorn supervisord

我在Ubuntu 12.04上使用supervisor 3.0a8-1.1运行Django 1.4站点,并且遇到了gunicorn 0.17.2和gevent 0.13.8的奇怪问题。

Supervisor的内存使用量不断增长,直到服务器没有响应。

有5个网站有以下主管配置:

command=/app/virtualenv/bin/newrelic-admin run-program /app/virtualenv/bin/python /app/manage.py run_gunicorn -c gunicorn_conf.py -k gevent
directory=/app
autostart=true
autorestart=true
stopsignal=KILL
killasgroup=true
environment=NEW_RELIC_CONFIG_FILE='/app/newrelic.ini'

以及下面的枪支配置:

workers = 4
bind = '0.0.0.0:(Site Port Number)'

这些都是通过NGINX反向代理的。

我在一个大型EC2实例上运行这些实例,它有2个内核和7.3GB内存,应该比我需要的更多。

还有其他人遇到过这个问题吗?

1 个答案:

答案 0 :(得分:4)

如果在没有supervisord的情况下运行项目时内存正确清除,那就太令人困惑了。

Supervisord只是一个守护进程经理。除了启动和管理流程之外,它没有做任何事情,在这种情况下,流程只是manage.py。

我唯一能想到的是autorestart已经打开,已知会导致内存泄漏,如果主管不断重启进程,因为它检测到更改并且错误没有被清除。这是actually fixed in supervisor 3.0b1。也许更新你的主管?