2

スーパーバイザ 3.0a8-1.1 を使用して Ubuntu 12.04 で 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.3 GB の RAM を備えた大規模な EC2 インスタンスでこれらを実行していますが、これは必要以上に大きいはずです。

他の誰かがこの問題に遭遇しましたか?

4

1 に答える 1

5

Supervisord を使用せずにプロジェクトを実行しただけでメモリが正しくクリアされている場合、それは不可解です。

Supervisord は単なるデーモン マネージャです。プロセスを起動して管理する以外は何もしません。この場合は、manage.py だけです。

私が考えることができる唯一のことは、自動再起動がオンになっていることです。これは、スーパーバイザーが変更を検出してエラーが解消されないためにプロセスを常に再起動している場合、メモリ リークを引き起こすことが知られています。これは、実際には Supervisor 3.0b1 で修正されました。多分あなたのスーパーバイザーを更新しますか?

于 2013-02-26T09:18:31.843 に答える