主管重启导致僵尸 uwsgi 进程

supervisor restart causes zombie uwsgi process

我在 nginx 和 uwsgi 上有一个 python/Django 项目 (myproject) 运行。

我是 运行 通过 supervisord 的 uwsgi 命令。这非常有效,但是在重新启动 supervisord 时它会创建僵尸进程。我究竟做错了什么?我忽略了什么来干净地做这件事?有什么建议吗?

主管服务通常需要很长时间。那时我在 supervisor.log 文件

中找到了以下内容

INFO waiting for stage2_BB_wsgi, stage3_BB_wsgi, stage4_BB_wsgi to die

注意事项:我是运行一台机器上的多个staging server,即stage2 .. stageN

supervisor.conf file extract [program:stage2_BB_wsgi] command=uwsgi --close-on-exec -s /home/black/stage2/shared_locks/uwsgi_bb.sock --touch-reload=/home/black/stage2/shared_locks/reload_uwsgi --listen 10 --chdir /home/black/stage2/myproject/app/ --pp .. -w app.wsgi -C666 -H /home/black/stage2/myproject/venv/ user=black numprocs=1 stdout_logfile=/home/black/stage2/logs/%(program_name)s.log stderr_logfile=/home/black/stage2/logs/%(program_name)s.log autostart=true autorestart=true startsecs=10 exitcodes=1 stopwaitsecs=600 killasgroup=true priority=1000

提前致谢。

您需要将 stopsignal 设置为 INTQUIT

默认情况下 supervisord 在重新启动程序时发出 SIGTERM。这不会杀死 uwsgi,只会重新加载它和它的工人。