按需講解之Supervisor


Supervisor是一個進程監控程序。

 

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

 

先弄懂兩個命令:

supervisord : supervisor的服務器端部分,啟動supervisor就是運行這個命令

supervisorctl:啟動supervisor的命令行窗口。

需求:redis-server這個進程是運行redis的服務。我們要求這個服務能在意外停止后自動重啟。

安裝(Centos):

yum install python-setuptools

easy_install supervisor

 

測試是否安裝成功:

echo_supervisord_conf

 

創建配置文件:

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   //打開命令行

[root@vm14211 ~]# supervisorctl
redis                            RUNNING    pid 24068, uptime 3:41:55

ctl中: help   //查看命令

ctl中: status  //查看狀態

 

遇到的問題:

1 redis出現的不是running而是FATAL 狀態

應該要去查看log

log在/tmp/supervisord.log

 

2 日志中顯示:

gave up: redis entered FATAL state, too many start retries too quickly

修改redis.conf的daemonize為no

具體說明:http://xingqiba.sinaapp.com/?p=240

事實證明webdis也有這個問題,webdis要修改的是webdis.json這個配置文件

 

完成驗證:

1 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

 

2 kill 30582

 

3

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

 

看到這個時候pid更新了。

 

完成,慶祝。

 

    ----------------------

作者:yjf512(軒脈刃)

出處:http://www.cnblogs.com/yjf512/

本文版權歸yjf512和cnBlog共有,歡迎轉載,但未經作者同意必須保留此段聲明


免責聲明!

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



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