【问题标题】:Laravel 4.1 - queue:listen performanceLaravel 4.1 - 队列:监听性能
【发布时间】:2014-05-07 13:45:07
【问题描述】:

我正在尝试使用 Laravel (4.1) 中的队列系统。 Redis(使用本机驱动程序)和 RabbitMQ 一切都按预期工作。 我遇到的唯一“问题”是性能不佳。看起来每秒只能处理 4 个作业(我在队列中推送 1000 个作业来测试它)。您有任何提高性能的提示吗?

【问题讨论】:

  • 嗨 Simone,Redis 托管在哪里? Redis 每秒可以处理数千次读取或写入。你用pipelining吗?
  • 我在这里可能错了,但我认为这是一般功能 - 使用queue:listen 定期检查队列,同时解雇一堆工作。但我怀疑如果队列有 100 个项目,你会让 PHP 一次做 100 件事情,毕竟它只是一个检查队列的 PHP 进程。不过,您可能可以创建多个队列侦听器来处理更多吞吐量。
  • @alexrussell:是的,我也这么认为。但是,多个队列侦听器的问题是 CPU 使用率。我想我会选择一种不同的方法,并将更多的工作“打包”到一个工作中,这样每当调用队列工作者时,它就可以一次处理更多的东西。谢谢!
  • @TwBert:我也可以试试你的方法,看看 Laravel 会发生什么,谢谢。
  • @SimoneFolador - 能否请您报告解决方案或您在此问题上的经验?

标签: performance laravel redis queue rabbitmq


【解决方案1】:

这是一个老问题,但我想我还是会发布。问题是 Laravel 的默认监听器并不是真正的队列消费者,它会定期轮询队列,除非它已经忙于工作。使用真正的 AMQP 需要从 pecl 安装一些额外的库。你可以找到那个插件here。我还建议为您使用这个作曲家包PHP AMQP library。然后你需要编写你的 Laravel 命令。

目前我正在为 Laravel 编写一个 RabbitMQ 处理程序来解决这个问题。

【讨论】:

  • 谢谢!请随时通知我您的工作。它可能会在未来的项目中派上用场。
  • > "目前我正在为 Laravel 编写一个 RabbitMQ 处理程序来解决这个问题。"好的,你写的吗?
【解决方案2】:

老问题,但对于任何来到这里的人来说,queue:work 命令都有一个守护进程模式,它的运行方式与 queue:listen 类似,只是它不必每次都重新启动/重新加载 Laravel,从而使其性能更高。请参阅文档:

http://laravel.com/docs/4.2/queues

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 2019-08-20
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多