2013-02-26 32 views
1

我在Ubuntu 12.04上運行了Django 1.4網站,主管3.0a8-1.1,並且遇到了一個奇怪的問題:gunicorn 0.17.2和gevent 0.13.8。主管Django Gunicorn Gevent內存使用情況

主管的內存使用率一直在增長,直到服務器沒有響應。

有5個站點有以下主管CONFIGS:

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 CONFIGS:

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

這些都正在通過反向代理NGINX來。

我在一個大的EC2實例上運行這些內核,這個實例有2個內核和7.3GB的內存,應該比我需要的多。

有沒有其他人遇到這個問題?

+0

這可能是一百萬的事情。你有沒有嘗試過使用空白的Django項目,看看內存問題是否存在?您需要先從問題集中消除代碼,然後擔心新遺物,gevent或gunicorn中的潛在錯誤。 – 2013-02-26 08:32:10

+0

我有兩個網站,一個是標準Mezannine,另一個是標準Djando CMS。這些都不使用newrelic。這些都是我可以得到的標準,因爲空白項目沒有使用足夠的內存來根據請求可靠地進行監視,據我所知。我已經運行這兩個項目沒有主管和內存得到清除,因爲它應該。 – Crazyconoli 2013-02-26 09:10:51

回答

4

如果只是在沒有supervisord的情況下運行項目時內存正確清除,那真是莫名其妙。

Supervisord只是一個守護進程管理器。它並沒有做任何事情,只是啓動和管理一個流程,在這種情況下,它只是manage.py。

我唯一能想到的就是autorestart打開了,如果管理員不斷重新啓動進程,因爲它檢測到更改並且錯誤沒有被清除,已知會導致內存泄漏。這是actually fixed in supervisor 3.0b1。也許更新你的主管?

+0

非常感謝,我會盡力。 autorestart已打開。 – Crazyconoli 2013-02-26 09:21:49

+0

更新主管確實已經停止了Guniciorn的內存問題。我們在芹菜任務中也有一些泄漏,這就是爲什麼它進行了很多進一步的測試來證實這一點。 – Crazyconoli 2013-03-18 05:11:54