Supervisor-進程監控自動重啟


Supervisor是一個進程監控程序。

需求一:我現在有一個進程需要每時每刻不斷的跑,但是這個進程又有可能由於各種原因有可能中斷。當進程中斷的時候我希望能自動重新啟動它,此時,我就需要使用到了Supervisor

先弄懂兩個命令:
supervisord : supervisor的服務器端部分,啟動supervisor就是運行這個命令
supervisorctl:啟動supervisor的命令行窗口。

需求二:redis-server這個進程是運行redis的服務。我們要求這個服務能在意外停止后自動重啟。
安裝(Centos下):
yum install python-setuptools
easy_install supervisor
測試是否安裝成功:
echo_supervisord_conf
創建配置文件:
sudo su#切換到root用戶,不然提示無權限
echo_supervisord_conf > /etc/supervisord.conf
修改配置文件:
在supervisord.conf最后增加:

[program:redis]
command = redis-server //需要執行的命令
autostart=true //supervisor啟動的時候是否隨着同時啟動
autorestart=true //當程序跑出exit的時候,這個program會自動重啟
startsecs=3 //程序重啟時候停留在runing狀態的秒數

(更多配置說明請參考:http://supervisord.org/configuration.html)

運行命令:
supervisord //啟動supervisor

supervisorctl//打開命令行
結果:
redis RUNNING pid 24068, uptime 3:41:55

ctl中: help //查看命令

ctl中: status //查看狀態

遇到的問題:

Q: redis出現的不是running而是FATAL 狀態
A: 應該要去查看log,log在/tmp/supervisord.log

Q: 日志中顯示:gave up: redis entered FATAL state, too many start retries too quickly
A: 修改redis.conf的daemonize為no
具體說明:http://xingqiba.sinaapp.com/?p=240
事實證明webdis也有這個問題,webdis要修改的是webdis.json這個配置文件

完成驗證:

ps aux | grep redis
[root@vm1~]# ps aux | grep redis
root 30582 0.0 0.0 9668 1584 ? S 14:12 0:00 redis-server

kill 30582

[root@vm1 ~]# ps aux | grep redis
root 30846 0.0 0.0 9668 1552 ? S 15:19 0:00 redis-server

看到這個時候pid更新了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM