Происшествия
Мы используем Django + Gunicorn + Nginx на нашем сервере. Проблема в том, что через некоторое время мы видим много рабочих-оружейников, которые стали сиротами, и многие другие, которые стали зомби. Также мы видим, что некоторые из рабочих рабочих Гуникорн порождают некоторых других работников Gunicorn. Наше лучшее предположение заключается в том, что эти рабочие становятся сиротами после того, как их родительские работники умерли.
Почему рабочие Gunicorn порождают детей-работников? Почему они умирают?! И как мы можем предотвратить это?
Я также должен упомянуть, что мы установили уровень журнала Gunicorn на debug
, и все же мы не видим ничего значимого, кроме журнала периодического журнала числа работников, который сообщает о количестве желаемых рабочих.
UPDATE
Это линия, которую мы использовали для запуска стрельбы:
gunicorn --env DJANGO_SETTINGS_MODULE=proj.settings proj.wsgi --name proj --workers 10 --user proj --group proj --bind 127.0.0.1:7003 --log-level=debug --pid gunicorn.pid --timeout 600 --access-logfile /home/proj/access.log --error-logfile /home/proj/error.log
Ответы
Ответ 1
В моем случае я развертываю серверы Ubuntu (выпуски LTS, теперь почти 14.04 LTS-серверов), и у меня никогда не было проблем с демонами gunicorn, я создаю gunicorn.conf.py и запускаю gunicorn с этой конфигурацией от выскочки с помощью script как в /etc/init/djangoapp.conf
description "djangoapp website"
start on startup
stop on shutdown
respawn
respawn limit 10 5
script
cd /home/web/djangoapp
exec /home/web/djangoapp/bin/gunicorn -c gunicorn.conf.py -u web -g web djangoapp.wsgi
end script
Я настраиваю gunicorn с конфигурацией файла .py и устанавливаю некоторые параметры (подробнее см. ниже) и развертываю мое приложение (с virtualenv
) в /home/web/djangoapp
и никаких проблем с процессами пушки-зомби и сирот.
i проверял ваши параметры, тайм-аут может быть проблемой, но другой заключается в том, что вы не настраиваете max-запросы в своей конфигурации, по умолчанию равно 0, поэтому автоматический перезапуск рабочего компьютера в вашем демоне и может генерировать утечки памяти (http://gunicorn-docs.readthedocs.org/en/latest/settings.html#max-requests)