나는 Supervisord를 사용하고 있는데 Supervisord 프로그램이 자동으로 다시 시작되는 데 문제가 있습니다.
supervisord.conf
[supervisord]
logfile=/dev/null
pidfile=/tmp/supervisord.pid
nodaemon=true
[unix_http_server]
file = /tmp/supervisor.sock
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[program:worker]
command=./manage.py rq worker %(ENV_QUEUES)s
process_name=%(program_name)s-%(process_num)s
numprocs=%(ENV_WORKERS_COUNT)s
directory=/app
stopsignal=TERM
autostart=true
autorestart=true
startsecs=300
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
[eventlistener:worker_healthcheck]
autorestart=true
serverurl=AUTO
command=./manage.py rq healthcheck
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0
events=TICK_60
감독자 상태
abc@abc-adhocworker-c89d9667b-9lqbd:/app$ exec supervisorctl -c worker.conf status
worker:worker-0 FATAL Exited too quickly (process log may have details)
worker:worker-1 FATAL Exited too quickly (process log may have details)
worker_healthcheck RUNNING pid 14, uptime 7:43:34
상태에는 치명적인 상태가 표시되지만 구성했더라도 자동으로 복구되지는 않습니다 autorestart=true
.
오류 발생 시 프로그램이 자동으로 복구/다시 시작되도록 하려면 무엇이 더 필요합니까?
다시 시작은 상태 확인에 따라 달라지며 eventlistener
모든 것이 정상이므로 자동 다시 시작이 프로그램에 적용되지 않는다는 오류 신호를 보낼 수 있습니까?
내 Supervisord.conf에는 Supervisorctl 섹션이 없으므로 이를 추가했는지 확실하지 않습니다. 그렇지 않으면 supervisorctl status
Supervisord 프로그램이 실패할 수 있기 때문에 자동 재시작이 올바르게 트리거될 것입니까?