为什么在使用supervisord运行时队列工作者非常慢?

时间:2015-07-04 17:45:00

标签: php laravel process supervisord beanstalkd

我有一个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

1 个答案:

答案 0 :(得分:1)

即使这张票是2年,我认为值得回答。

我的猜测是,这可能是由您设置的显式日志文件和stderr的重定向引起的,此外,根据您的配置,看起来您在本地运行,并在非隔离环境,意味着您的主机操作系统操作和应用程序会干扰您的基准测试。

无论哪种方式,我相信你很久以前就已经解决了这个问题:D