系统环境:CentOS release 6.8,通过yum -y install supervisor 安装了supervisor软件,修改supervisor的配置文件后,启动进程supervisor进程(supervisord -c /data/script/supervisord.conf)。
到这里都算正常,配置的进程也能正常被监控。但接下来通过supervisorctl -c /data/script/supervisord.conf 查看被监控进程的信息时,报如下错误:
supervisorctl http://127.0.0.1:9001 refused connection
在网上搜索解决方案,基本上就两种思路:1.没有通过-c指定对应的配置文件;2.supervisord.conf配置文件对应的inet_http_server填写错误。但是我这两处都没问题。那么究竟是什么原因导致的呢?
1、突破口:
我想查看一下supervisor的版本,通过如下命令:
$ supervisord -v
3.3.3
但是我安装的supervisor执行上述命令时提示没有此参数。这里基本上找到了答案,supervisor的版本问题。回到上面,我是通过yum安装的,本机无法联网。
2、解决方案:
下载源码包,手动安装。
wget https://pypi.python.org/packages/31/7e/788fc6566211e77c395ea272058eb71299c65cc5e55b6214d479c6c2ec9a/supervisor-3.3.3.tar.gz#md5=0fe86dfec4e5c5d98324d24c4cf944bd
tar -zxvf supervisor-3.3.3.tar.gz
cd supervisor-3.3.3
python setup.py install
安装完成后,执行supervisord -v 一切正常,然后重启supervisord进程,再执行supervisorctl -c /data/script/supervisord.conf 就一切正常。
番外:这里再记录一个常见问题,当执行supervisorctr启动被监控的进程时,包如下错误:
supervisorctl ERROR (spawn error)
这里的信息太少,尝试到supervisor的日志中查看到底出了什么问题,结果令人失望,日志里的信息:
test entered FATAL state, too many start retries too quickly
最简单的办法是将supervisord.conf中启动进程的命令手动执行一下。不过我在网上搜索,找到一个更简单的解决办法,通过如下命令,可以能解决大多数问题。
//programe换成你自己的进程名
supervisorctl tail programname stdout