我在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内存,应该比我需要的更多。
还有其他人遇到过这个问题吗?
答案 0 :(得分:4)
如果在没有supervisord的情况下运行项目时内存正确清除,那就太令人困惑了。
Supervisord只是一个守护进程经理。除了启动和管理流程之外,它没有做任何事情,在这种情况下,流程只是manage.py。
我唯一能想到的是autorestart已经打开,已知会导致内存泄漏,如果主管不断重启进程,因为它检测到更改并且错误没有被清除。这是actually fixed in supervisor 3.0b1。也许更新你的主管?