143

用 Supervisor 实现进程守护,在异常退出时自动重启

 6 years ago
source link: https://mp.weixin.qq.com/s/m1LC0A8ckOUyGfhRPooChw?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Jn2Eja6.jpg!web

程序启动后,有些是以daemon的形式运行,但在意外退出后,如果不能及时重新启动,会有比较严重的影响。

比如Zimg在图片处理中由于某些图片处理失败,会导致zimg进程挂掉,影响正常的服务提供,并且只能在服务失效后才能察觉到。必须采用一个进程守护来时刻保证zimg进程挂掉后,再自动重新启动。本篇介绍Supervisor工具来进行Zimg进程的守护。

Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。

安装过程如下:

提示显示,python 3版本下,没办法正常安装Supervisor,只能先将python 3删除掉,再安装Supervisor。采用rm -rf xxxxx命令删除即可。

删除后,继续采用pip命令来安装Supervisor。

解决方法:需要先安装扩展源EPEL。

EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。

首先安装epel扩展源:

yum -y install epel-release

然后再安装pip

yum -y install python-pip --安装成功后,简单测试下pip命令是否生效 [root@localhost bin]# pip -V pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)

安装结束后,会有三个比较关键的执行文件:

  1. echo-supervisord-conf,默认生成supervisord.conf配置文件

  2. supervisord 启动等相关命令

  3. supervisorctl 交互等相关命令

下一步进行Supervisor开启的一个进程守护测试工作,以上篇Zimg为例。( Zimg—轻量级图片服务器搭建利器

[root@localhost ~]# mkdir /etc/supervisor/ [root@localhost ~]# echo_supervisord _conf > /etc/supervisor/supervisord.conf -- 生成一个比较全面的示例文件,稍加修改就可以使用。

36zm6r2.png!web

详细的配置说明,参考网络资料,这里不再赘述。

配置zimg的program,同时配置inet_ http _server可以通过UI来管理应用,

JBjIRnZ.png!web

[root@localhost ~]# supervisord -c /etc/supervisor/supervisord.conf 启动Supervisor [root@localhost ~]# supervisorctl reload 配置文件有变动后,重新加载Supervisor

启动后,发现Zimg并没有如理想般加载起来,查看日志发现如下错误

iyeIBjM.jpg!web

由于zimg的配置文件中,默认配置is_daemon=1,这里 如果采用supervisor的话,需要将配置daemon值设为0,交由supervisor来接管

YzuYfqI.png!web

重新启动,显示如下图:

A7zmea2.jpg!web

可以发现,在kill掉或pkill掉进程后,zimg程序依旧正常运转。也可以在UI界面上看到进程的运行状态:

u67vIbe.jpg!web

后记

类似的组件,也到网络中检索一翻,能实现相关功能有基于nodejs实现的几种方案,如pm2、supervisor、forever等等,本例仅以Supervisor作测试,其它方案类似,有兴趣的朋友可以深入验证下。

扩展阅读:

7NNjUrr.jpg!web

长按2秒,识别二维码,关注我。

关注程序员成长


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK