主管重启导致僵尸 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
设置为 INT
或 QUIT
。
默认情况下 supervisord
在重新启动程序时发出 SIGTERM
。这不会杀死 uwsgi
,只会重新加载它和它的工人。
我在 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
设置为 INT
或 QUIT
。
默认情况下 supervisord
在重新启动程序时发出 SIGTERM
。这不会杀死 uwsgi
,只会重新加载它和它的工人。