Supervisor管理hhvm进程

hhvm速度很快,但由于与网站程序兼容性或hhvm本身不成熟,跑一段时间后会出现hhvm宕掉,使前台页面出现502 bad gateway。为了防止hhvm进程自动宕掉,我们可以用Supervisor来管理hhvm进程,它会在hhvm宕掉后自动启动hhvm进程。

Supervisor已经加到《lnmp一键安装包》和《OneinStack》,欢迎测试。

HHVM相关教程请参考如下:

CentOS 7下hhvm Nginx环境搭建:linuxeye.com/402.html

CentOS 6下hhvm Nginx环境搭建:linuxeye.com/396.html

Supervisor简介

Supervisor是一个Python开发的client/server系统,可以管理和监控*nix上面的进程。

部件:Supervisor有不同的部件组成,部件分别负责不同的功能,对进程进行监控和管理。

supervisord:Supervisor的server部分称为supervisord。主要负责管理子进程,响应客户端的命令,log子进程的输出,创建和处理不同的事件

supervisorctl:Supervisor的命令行客户端。它可以与不同的supervisord进程进行通信,获取子进程信息,管理子进程

Web Server:Supervisor的web server,用户可以通过web对子进程进行监控,管理等等,作用与supervisorctl一致。

XML-RPC inteface:XML-RPC接口,提供XML-RPC服务来对子进程进行管理,监控

安装Supervisor

安装supervisor很简单,通过easy_install就可以安装

  1. yum -y install python-setuptools
  2. easy_install supervisor

安装完成之后,就可以用echo_supervisord_conf命令来生成配置文件

  1. echo_supervisord_conf > /etc/supervisord.conf

配置supervisor管理hhvm进程

vi /etc/supervisord.conf

pidfile=/tmp/supervisord.pid 改成pidfile=/var/run/supervisord.pid

#并在/etc/supervisord.conf后面追加如下内容:

  1. [program:hhvm]
  2. command=/usr/bin/hhvm –mode server –user www –config /etc/hhvm/server.ini –config /etc/hhvm/php.ini –config /etc/hhvm/config.hdf
  3. numprocs=1 ; number of processes copies to start (def 1)
  4. directory=/tmp ; directory to cwd to before exec (def no cwd)
  5. autostart=true ; start at supervisord start (default: true)
  6. autorestart=unexpected ; whether/when to restart (default: unexpected)
  7. stopwaitsecs=10 ; max num secs to wait b4 SIGKILL (default 10)

supervisor开机脚本

  1. wget https://github.com/Supervisor/initscripts/raw/master/redhat-init-mingalevme
  2. /bin/mv redhat-init-mingalevme /etc/init.d/supervisord
  3. chmod +x /etc/init.d/supervisord
  4. chkconfig supervisord on  #开机自启动
  5. service supervisord restart  #启动

测试Supervistor

Supervisor管理hhvm进程
Thu Jan 15 14:03:54 CST 2015