私は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プログラムが失敗する可能性があるため、自動再起動が正しくトリガされますか?