【问题标题】:Supervisor Django Gunicorn Gevent Memory Usage主管 Django Gunicorn Gevent 内存使用情况
【发布时间】:2013-02-11 14:31:13
【问题描述】:

我在 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'

以及以下 gunicorn 配置:

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

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

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

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

【问题讨论】:

  • 这可能是一百万件事。您是否尝试过使用空白 django 项目并查看内存问题是否仍然存在?您需要首先从问题集中消除您的代码,然后担心 new-relic、gevent 或 gunicorn 中的潜在错误。
  • 我有 2 个站点,一个使用标准 Mezannine,另一个使用标准 Djando CMS。这些都没有使用newrelic。这些是我所能得到的标准,因为据我所知,一个空白项目没有使用足够的内存来可靠地监控请求。我在没有主管的情况下运行了这两个项目,并且内存被清除了。

标签: django ubuntu gevent gunicorn supervisord


【解决方案1】:

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

Supervisord 只是一个守护进程管理器。它除了启动和管理一个进程之外什么都不做,在这种情况下,它只是 manage.py。

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

【讨论】:

  • 非常感谢,我会试试的。自动重启已开启。
  • 更新主管确实已经解决了 Guniciorn 的内存问题。我们在 celery 任务中也有一些漏洞,这就是为什么需要进行大量进一步测试来确认这一点的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-09
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多