主管工人停止加班并不重新启动(与laravel一起使用)

6
我终于通过这个教程成功让supervisord服务在服务器重启后自动运行,这部分效果很好。我将其设置为运行10个工作进程。问题是第二天检查时,有些进程已停止并且没有重新启动,服务器也没有重新启动。

我的程序在supervisord.conf文件中的配置如下:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command= php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
directory=/home/magic/_app/_laravel
numprocs=10
redirect_stderr=true
autostart=true
autorestart=true
startsecs=0
startretries=10
exitcodes=0,2
stopsignal=TERM
stopwaitsecs=10
stdout_logfile=/home/magic/_app/_laravel/storage/logs/supervisor/supervisor.log
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=10
stdout_capture_maxbytes=0
stdout_events_enabled=false
user=magic
environment=PATH="/usr/local/bin"

当我第一次使用service supervisord start启动服务,然后如果我执行service supervisord status,它会显示以下进程。虽然我不完全理解它们,但看起来是正确的,因为有10个我的artisan命令实例。

|-17991 /usr/bin/python /usr//bin/supervisord --pidfile /tmp/supervisord.pid
|-17992 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-17993 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-17994 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-17995 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-17996 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-17997 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-17998 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-17999 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-18000 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-18001 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-18002 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-18003 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-18004 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-18005 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-18006 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-18007 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-18008 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-18009 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-18010 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
`-18011 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production

然后过了一段时间,通常是第二天,我看到这样的情况。这一次只有6个进程在运行,所以其中4个已经停止了。

|- 3984 /usr/bin/python /usr//bin/supervisord --pidfile /tmp/supervisord.pid
|- 3985 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|- 3986 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|- 3988 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|- 3989 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-12224 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-13610 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-14263 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-16417 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
|-17424 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-17425 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-17427 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-17428 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-17429 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-17430 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
|-17856 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
`-18356 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600

监控日志显示了一些正常的内容。其中有一些500错误,我认为这可能是一个线索需要调查,但是它们与缺失工作进程的数量和时间戳不匹配。
Laravel日志本身有一些超出最大执行时间的错误,实际上从我上次清除日志开始就有10个这样的错误。所以我不知道是否每个工作进程都会出现这种情况。它看起来像这样。再次,时间戳与监控日志不太匹配,因此很难确定这是否会导致问题。我可以增加PHP允许的执行时间,但我不知道这是否会导致工作进程无法重新启动。
[2016-04-14 02:56:20] production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Maximum execution time of 30 seconds exceeded' in /home/magic/_app/_laravel/vendor/symfony/process/Symfony/Component/Process/Pipes/UnixPipes.php:130

如果有任何建议或建议,我会非常感激。真的很想解决这个问题。 因此,在修复supervisorctl以正常工作之后,现在当我执行supervisorctl状态时,它显示所有10个工作程序都在运行。但问题是他们没有运行他们应该运行的命令。 以下是supervisorctl状态现在显示的内容:
laravel-worker:laravel-worker_00   RUNNING   pid 11566, uptime 4:38:36
laravel-worker:laravel-worker_01   RUNNING   pid 18358, uptime 2 days, 18:40:16
laravel-worker:laravel-worker_02   RUNNING   pid 8102, uptime 1 day, 20:57:15
laravel-worker:laravel-worker_03   RUNNING   pid 10691, uptime 11:42:54
laravel-worker:laravel-worker_04   RUNNING   pid 32543, uptime 1 day, 22:07:53
laravel-worker:laravel-worker_05   RUNNING   pid 30215, uptime 20:40:02
laravel-worker:laravel-worker_06   RUNNING   pid 32732, uptime 1 day, 22:03:05
laravel-worker:laravel-worker_07   RUNNING   pid 24625, uptime 21:44:41
laravel-worker:laravel-worker_08   RUNNING   pid 19807, uptime 2:36:21
laravel-worker:laravel-worker_09   RUNNING   pid 32332, uptime 1 day, 3:07:34

以下是service supervisord status的显示内容。您可以看到它显示了10个工作进程和这些工作进程正在执行的3个任务。但应该有10个任务与10个工作进程匹配。因此,似乎加班工作人员停止执行任务,尽管他们仍在运行:

* supervisord.service - SYSV: Supervisor Server
   Loaded: loaded (/etc/rc.d/init.d/supervisord)
   Active: active (running) since Thu 2016-04-21 16:44:43 EDT; 2 days ago
     Docs: man:systemd-sysv-generator(8)
   CGroup: /system.slice/supervisord.service
           |- 8102 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           |-10691 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           |-11566 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           |-18356 /usr/bin/python /usr//bin/supervisord --pidfile /tmp/supervisord.pid
           |-18358 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           |-19807 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           |-24625 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           |-28557 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
           |-28711 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
           |-28712 /usr/local/bin/php artisan queue:work --queue=high,default --delay=0 --memory=128 --sleep=5 --tries=5 --env=production
           |-30215 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           |-32332 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           |-32543 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600
           `-32732 php /home/magic/_app/_laravel/artisan queue:listen --queue=high,default --tries=5 --sleep=5 --timeout=600

Apr 21 16:44:43 host systemd[1]: Starting SYSV: Supervisor Server...
Apr 21 16:44:43 host supervisord[18351]: Starting supervisord: /usr/lib/python2.7/site-packages/supervisor-3.2.3-py2.7.egg/supervisor/option...
Apr 21 16:44:43 host supervisord[18351]: 'Supervisord is running as root and it is searching '
Apr 21 16:44:43 host supervisord[18351]: [17B blob data]
Apr 21 16:44:43 host systemd[1]: Started SYSV: Supervisor Server.

@valtuarte,我不认为 supervisorctl 设置或运行正确,也不知道 supervisord 是否需要它。'supervisorctrl status' 命令的状态返回信息是 'unix:///var/run/supervisor.sock no such file'。对于 supervisorctl tail <process_name> 也有同样的错误。 - zen
@zen 请尝试使用supervisorctl -c pathToSupervisord.conf status命令。 - Wistar
@Wistar 仍然遇到相同的错误。unix:///var/run/supervisor.sock 文件不存在。 - zen
@zen 看起来你没有配置 http 服务器(无论是 Unix 还是 Inet),因此 supervisorctl 无法连接到它;你可以考虑启用它。 - fernandezcuesta
@valtuarte 它正在通过WHM/Cpanel运行Apache httpd服务器。我需要做什么特定的事情或打开任何端口来解决这个问题吗? - zen
显示剩余9条评论
1个回答

2
我想我可能已经解决了这个问题。可能是由于在supervisord.conf文件的command属性中使用了错误的php引起的。我将其从php更改为/usr/local/bin/php,现在已经运行了2天,没有任何任务需要重新启动或停止处理队列。
如果我发现问题重复出现,我会稍后更新这个问题,但现在它似乎比以往任何时候都更加稳定地运行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接