【问题标题】:Starting supervisorctl gives ERROR (spawn error) on laravel queue worker process启动 supervisorctl 在 laravel 队列工作进程上给出错误(生成错误)
【发布时间】:2017-10-29 04:19:09
【问题描述】:

所以我已经安装了主管,它似乎正在运行。 我已将队列工作者的配置文件放在 /etc/supervisor/conf.d/laravel-worker.conf 中

它看起来像这样

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/html queue:work database --sleep=3 --tries=2 --daemon
autostart=true
autorestart=true
numprocs=4
redirect_stderr=true
stdout_logfile=/var/www/html/storage/logs/laravel.log

我的 supervisord.conf 看起来像这样

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
chmod=0775                       ; sockef file mode (default 0700)
chown=root

[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor            ; ('AUTO' child log dir, default $TEMP)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
 ; added by defining them in separate rpcinterface: sections
 [rpcinterface:supervisor]
 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisor/conf.d/*.conf

当我尝试启动进程时出现错误 - ERROR(生成错误)。

当我查看它显示的日志文件时 -

2017-05-28 22:21:20,697 INFO exited: laravel-worker_01 (exit status 0; not expected)
2017-05-28 22:21:20,702 INFO exited: laravel-worker_00 (exit status 0; not expected)
2017-05-28 22:21:20,704 INFO exited: laravel-worker_02 (exit status 0; not expected)
2017-05-28 22:21:20,706 INFO exited: laravel-worker_03 (exit status 0; not expected)
2017-05-28 22:21:23,711 INFO spawned: 'laravel-worker_00' with pid 16280
2017-05-28 22:21:23,713 INFO spawned: 'laravel-worker_01' with pid 16281
2017-05-28 22:21:23,715 INFO spawned: 'laravel-worker_02' with pid 16282
2017-05-28 22:21:23,719 INFO spawned: 'laravel-worker_03' with pid 16283
2017-05-28 22:21:23,772 INFO exited: laravel-worker_02 (exit status 0; not expected)
2017-05-28 22:21:23,774 INFO gave up: laravel-worker_02 entered FATAL state, too many start retries too quickly
2017-05-28 22:21:23,774 INFO exited: laravel-worker_01 (exit status 0; not expected)
2017-05-28 22:21:23,776 INFO gave up: laravel-worker_01 entered FATAL state, too many start retries too quickly
2017-05-28 22:21:23,776 INFO exited: laravel-worker_03 (exit status 0; not expected)
2017-05-28 22:21:23,777 INFO gave up: laravel-worker_03 entered FATAL state, too many start retries too quickly
2017-05-28 22:21:23,777 INFO exited: laravel-worker_00 (exit status 0; not expected)
2017-05-28 22:21:24,778 INFO gave up: laravel-worker_00 entered FATAL state, too many start retries too quickly

我已验证我的配置文件中的所有文件都存在。我不确定我在 laravel-worker.conf 中使用了正确的配置。我搜索了文档和其他 stackoverflow 线程,但找不到解决方案

【问题讨论】:

  • 作为一种快速排除故障的方法,您可以在 cli 上运行 /etc/supervisor/conf.d/laravel-worker.conf 文件中的命令值,它很可能会告诉您生成错误的来源。本例中的命令值为php /var/www/html queue:work database --sleep=3 --tries=2 --daemon

标签: linux multithreading ubuntu supervisord


【解决方案1】:

如果您使用的是 Laravel 7 或更低版本,如果在命令中传递选项,您可能会遇到错误。就我而言,删除这些选项可以解决问题。

改变这一行:

command=php /var/www/html queue:work database --sleep=3 --tries=2 --daemon

到这里:

command=php /var/www/html queue:work

【讨论】:

    【解决方案2】:

    您可以通过查看日志文件找出您遇到的错误类型 stdout_logfile=/var/www/html/storage/logs/laravel.log

    【讨论】:

      【解决方案3】:

      我也面临同样的问题,在正确指定队列名称后问题已解决

      command=php /home/vagrant/code/prject1/artisan queue:work redis --queue=email --sleep=3 --tries=1 --daemon
      

      这是我的工作文件laravel-worker.conf

      execution

      【讨论】:

        【解决方案4】:

        我通过重启主管得到了解决

        sudo service supervisor reload
        

        【讨论】:

          【解决方案5】:

          您需要在您的 conf 中添加 artisan 并在您的 conf 文件中添加用户

          例如

          [program:laravel-worker]
          process_name=%(program_name)s_%(process_num)02d
          command=php /home/site.com/kernel/artisan queue:work --sleep=3 -- 
          tries=3
          autostart=true
          autorestart=true
          user=root
          numprocs=10
          redirect_stderr=true
          stdout_logfile=/home/site.com/kernel/worker.log
          

          【讨论】:

            【解决方案6】:

            所以问题显然出在我的 laravel-worker 上 我需要像这样在路径中添加“/artisan”来完成命令路径 -

            [program:laravel-worker]
            process_name=%(program_name)s_%(process_num)02d
            command=php /var/www/html/artisan queue:work database --sleep=3 --tries=2 --daemon
            

            【讨论】:

              猜你喜欢
              • 2019-10-09
              • 2014-11-10
              • 2015-12-21
              • 2017-01-29
              • 1970-01-01
              • 2017-08-11
              • 2019-05-06
              • 2021-12-27
              • 1970-01-01
              相关资源
              最近更新 更多