【发布时间】:2015-07-04 17:45:00
【问题描述】:
我有一个 beanstalkd 队列实现。我创建了一个基准工具来测试我的队列处理时间。当我在这样的终端选项卡中打开我的 PHP 工作者时:
php artisan queue:work --daemon --sleep=0
完成所有工作大约需要 8 秒。如果我打开总共 4 个终端选项卡并运行上述行,然后以相同的负载再次测试,大约需要 2 秒。太棒了。
但是,当我使用 supervisord 运行我的工作人员时,处理相同的负载大约需要 7-8 秒,有 4 个工作人员。即使我将工人增加到 20 人,我也看不到任何影响。有时我看到增加工人会产生负面影响(11 秒)。我确信所有 20 名工人都在运行。
那么这里的问题是什么?如何加快处理速度?在真正的服务器中,我不能让工作人员在终端选项卡中运行。 我将非常感谢您的帮助:)
这是我的主管配置:
[program:app-worker]
process_name=%(program_name)s_%(process_num)02d
command=php artisan queue:work --daemon --sleep=0
directory=/home/vagrant/Code/app
autostart=true
autorestart=true
user=vagrant
redirect_stderr=true
numprocs=4
stdout_logfile=/home/vagrant/Code/app/storage/logs/worker.log
【问题讨论】:
-
symfony cli 消费者也有同样的问题
-
@joserobleda 我发现 Ubuntu Upstart 比 Supervisord 快得多 serversforhackers.com/video/process-monitoring-with-upstart
-
我昨天找到了同一个链接!我会试一试的。
标签: php laravel process supervisord beanstalkd