记一次supervisor启动子进程失败

现象:

[root@wangzhandaima supervisor]# supervisorctl update

consumer_for_unpaid_order_status_check: added process group

[root@wangzhandaima supervisor]# supervisorctl status

admin_info RUNNING pid 27176, uptime 22 days, 15:27:11

consumer_for_unpaid_order_status_check BACKOFF Exited too quickly (process log may have details)

crontab_order_status_problem RUNNING pid 27182, uptime 22 days, 15:27:11

[root@wangzhandaima supervisor]# supervisorctl status

admin_info RUNNING pid 27176, uptime 22 days, 15:27:14

consumer_for_unpaid_order_status_check FATAL Exited too quickly (process log may have details)

crontab_order_status_problem RUNNING pid 27182, uptime 22 days, 15:27:14

 

 

 

配置文件:

cat /etc/supervisor/status_check.conf

[program:consumer_for_unpaid_order_status_check]

command=/usr/bin/php script_files/consumer_for_unpaid_order_status_check.php

directory=/aaa/bbb/ccc/ddd/

autostart=true

autorestart=true

user=root

numprocs=1

stdout_logfile=/tmp/XXX_stdout.log

stdout_logfile_maxbytes=10MB

stderr_logfile=/tmp/XXX_stderr.log

stderr_logfile_maxbytes=10MB

 

排查过程及解决办法:

1,查看日志都为空

[root@wangzhandaima supervisor]# vim /tmp/XXX_stdout.log

[root@wangzhandaima supervisor]# vim /tmp/XXX_stderr.log

2,手动执行命令测试:

[root@wangzhandaima supervisor]# cd /aaa/bbb/ccc/ddd/------------在该路径下

[root@wangzhandaima admin27]# /usr/bin/php script_files/consumer_for_unpaid_order_status_check.php--------多了一级目录执行php文件直接什么都没打印,也没有卡在那里执行。

[root@wangzhandaima admin27]# ps -ef | grep consumer-------没有进程

root 22674 21552 0 09:46 pts/0 00:00:00 grep consumer

[root@wangzhandaima admin27]# cd ./script_files/---------再进一级目录

[root@wangzhandaima script_files]# /usr/bin/php consumer_for_unpaid_order_status_check.php---------在该目录下执行php命令,成功运行,知道按Ctrl+c才退出。

^C

所以修改status_check.conf配置文件为如下:

[root@wangzhandaima supervisor]# vim ./status_check.conf

[program:consumer_for_unpaid_order_status_check]

command=/usr/bin/php consumer_for_unpaid_order_status_check.php

directory=/aaa/bbb/ccc/ddd/

autostart=true

autorestart=true

user=root

numprocs=1

stdout_logfile=/tmp/XXX_stdout.log

stdout_logfile_maxbytes=10MB

stderr_logfile=/tmp/XXX_stderr.log

stderr_logfile_maxbytes=10MB

[root@wangzhandaima supervisor]# supervisorctl start consumer_for_unpaid_order_status_check

consumer_for_unpaid_order_status_check: ERROR (spawn error)

[root@wangzhandaima supervisor]# supervisorctl status

admin_info RUNNING pid 27176, uptime 22 days, 15:31:02

consumer_for_unpaid_order_status_check FATAL Exited too quickly (process log may have details)

crontab_order_status_problem RUNNING pid 27182, uptime 22 days, 15:31:02

查看日志都为空:

[root@wangzhandaima supervisor]# vim /tmp/XXX_stdout.log

[root@wangzhandaima supervisor]# vim /tmp/XXX_stderr.log

3,考虑到是不是要配置文件名称与配置文件中的program:名称一致

尝试修改文件名status_check.conf为consumer_for_unpaid_order_status_check.conf

然后执行

[root@wangzhandaima supervisor]# supervisorctl update

consumer_for_unpaid_order_status_check: stopped

consumer_for_unpaid_order_status_check: updated process group

执行成功。

你可能感兴趣的:(supervisor)