【问题标题】:Why queue worker is terribly slow while running with supervisord?为什么队列工作者在使用 supervisord 运行时非常慢?
【发布时间】: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

【问题讨论】:

标签: php laravel process supervisord beanstalkd


【解决方案1】:

虽然这张票有 2 年历史了,但我认为它值得回答。

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

不管怎样,我相信你早就解决了这个问题:D

【讨论】:

    猜你喜欢
    • 2017-01-09
    • 2019-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    • 1970-01-01
    相关资源
    最近更新 更多