Я использую сервер приложений gunicorn 19.7.1 с обратным прокси-сервером nginx для проекта Django (машина Ubuntu 14.04).
ps aux | grep gunicorn | grep -v grep | wc -l
дает 3043 в данный момент.
Тогда как в /etc/init/gunicorn.conf
, У меня всегда было -w 33
. Тем не менее, эти лишние рабочие остаются, даже если я sudo service gunicorn stop
и sudo service gunicorn start
.
Как мне убить посторонних работников?
Что я пробовал:
sudo service gunicorn stop
и sudo service gunicorn start
не сработало.
Далее мне порекомендовали два способа убить посторонних работников. Пробовал - тоже безуспешно. В основном, когда я их пробую, ничего не происходит.
Вот способ первый:
1) Получите Gunicorn pid
через sudo service gunicorn status
2) Сохраните всех «желаемых» рабочих, которых нельзя убить:
echo 123 > desired_workers
pgrep -P 123 >> desired_workers
3) Теперь получите всех рабочих-пулеметчиков по всему миру:
pgrep gunicorn > all_workers
4) Наконец, просто выполните:
cat desired_workers all_workers | sort | uniq -u | xargs kill
Вышеуказанное не сработало. Точно так же cat desired_workers all_workers | sort | uniq -u | xargs sudo kill
тоже не сработало. Не пробовать это как root
.
Далее я просто попробовал pkill gunicorn
и sudo pkill gunicorn
. В обоих случаях ничего не произошло. Что еще я могу здесь сделать?
Как были созданы посторонние рабочие-пулеметчики?
Количество рабочих 33
всегда был правильно настроен в моей загруженной производственной системе.
Однако несколько часов назад я пробовал многопроцессорность python на сервере, и все пошло не так. Рабочие Gunicorn съели всю память и также удалили резидентные экземпляры Redis.
Я отменил изменение и смог вернуть все обратно в онлайн, за исключением того, что память не была освобождена, и мне пришлось справиться с этими устаревшими рабочими-пулеметами. В чем дело?
Вам следует попробовать отправить другой сигнал с помощью kill. По умолчанию TERM
вы могли бы попробовать INT
и если это не сработает KILL
, например,
cat desired_workers all_workers | sort | uniq -u | xargs kill -INT
Как были созданы посторонние рабочие-пулеметчики?
Что-то, что вы сделали, пока
Я пробовал многопроцессорность python на сервере, и все пошло наперекосяк.
Вам действительно не следует проводить такого рода исследования своих производственных систем. Тестовые системы легко раскрутить, и они работают намного быстрее, чем время, которое вы потратили (не) на исправление вещей.