supervisordのstartsecs
supervisordのstartsecsって具体的に何なんだということで,以下の設定で設定でsupevisorを使ってプロセスを起動してみる.プロセスの起動時間をいじってみて,実験してみる.
supervisor.d/demo.ini
[program:demo] command=python /home/vagrant/test.py process_name=%(program_name)s numprocs=1 autostart=true user=vagrant redirect_stderr=true stdout_logfile=/var/log/supervisor/demo.log stopsignal=INT startsecs=5
これ→stratsecs=5
実験
sleepして終了するプログラム,home/vagrant/test.py
をsupervisorから動かしてみる.
その1
import time time.sleep(6) print "finish!"
起動後6秒経って終了.
supervisor> status demo EXITED Nov 01 02:46 AM
その2
import time time.sleep(4) print "finish!"
起動後4秒経って終了.
supervisor> status demo BACKOFF Exited too quickly (process log may have details)
結果
startsecs
より早く終了したら異常終了,遅く終了したら正常終了と判断するみたいです.
ちなみに
import sys import time time.sleep(x) print "finish!" sys.exit(1)
exitcodeを0以外にしてあげると,BACKOFFでもEXITでも再起動はちゃんとしてくれた.(追記:autorestartをunexpectedにしていたからでした) confの設定の詳しい説明をしてくれているとことがありました。