最近服务器redis服务莫名其妙挂了两次,每次都要人工重启,无奈只能上进程守护,本来打算用shell脚本来操作的,但是经过搜索发现supervisor也很强大,所以就直接安装了。
在配置的过程中遇到了FATAL Exited too quickly (process log may have details) 的错误,经过测试完美解决。
一、Supervisor安装过程
Supervisor是基于python开发的,安装Supervisor前,需要先安装python,Supervisor可以通过pip或者easy_install安装。
通过easy_install安装
yum install python-setuptools easy_install supervisor
或者,通过pip安装
pip install supervisor
具体可参看官方文档http://supervisord.org/installing.html
二、supervisor的使用
安装完执行以下命令:
echo_supervisord_conf > /etc/supervisord.conf
随后我们对生成的配置文件进行编辑,主要修改最后两行,我这里修改为:
[include] files = supervisord.d/*.ini
根据修改的内容,我们创建supervisord.d目录,然后在目录下创建需要监控的配置文件,这里以redis为例,创建redis.ini内容如下:
[program:redis] #需要注意,commond这里不能使用service xxx start | stop |restart |reload 等命令 command=/www/server/redis/src/redis-server /www/server/redis/redis.conf user=root autostart = true autoresart = true stderr_logfile = /var/log/supervisor/redis.log stdout_logfile = /var/log/supervisor/redis.log stderr_logfile_maxbytes=10MB stderr_logfile_backups=10 startsecs=3
启动supervisor,启动命令有多种,可以自行尝试,我这里使用的是:
supervisord -c /etc/supervisord.conf
启动后我们运行:
supervisorctl status
得到如下:
redis RUNNING pid 5318, uptime 0:00:29
表示启动成功,我们尝试使用 kill -9 5318结束redis进程后,在执行ps -ef |grep redis会发现服务已经自动重启,至此supervisor进程守护配置完毕。
三、一些错误记录
这次在配置redis守护的时候遇到了FATAL Exited too quickly (process log may have details) 错误,经过查找一些资料发现问题出在了配置文件程序启动一行,我最初写的是service redis start,这个命令写入运行supervisor后虽然redis启动起来了,按时监控结果报FATAL Exited too quickly (process log may have details) 错误,原因是Supervisor 监控的是这个 service 命令……这个命令是启动 redis的,然后启动完了这个 service 就结束了,所以 supervisor 就拼了命的给你启动……然后这个命令确实会很快退出……
然后改成 command=/www/server/redis/src/redis-server /www/server/redis/redis.conf 完美解决问题。