gpt4 book ai didi

php - Laravel - 队列 worker ,高 CPU

转载 作者:搜寻专家 更新时间:2023-10-31 21:24:55 26 4
gpt4 key购买 nike

我有一个 Laravel 应用程序(在 Forge 上),它正在向 SQS 发布消息。然后我在 Forge 上有另一个盒子,它运行 Supervisor 和队列工作人员,这些工作人员正在使用来自 SQS 的消息。

现在,我只有一个守护进程工作人员处理来自 SQS 的特定数据管。当消息出现时,它们确实需要一些时间来处理——从 30 到 60 秒不等。盒子上的内存使用情况很好,但 CPU 几乎立即达到峰值,然后一切似乎都变慢了。

有什么办法可以解决这个问题吗?我是否应该分派(dispatch)许多较小的作业(可以由多个 worker 使用)而不是一个不能在 worker 之间分配的大型作业?

另外,我注意到 Supervisor 只使用了我的两个核心之一。有什么办法让它同时使用两者?

最佳答案

只要提供扩展,内存密集型应用程序是可管理的,但 CPU 峰值是难以管理的,因为它发生在一个内核中,如果发生这种情况,有时您的服务器甚至可能会被沙盒化。

为了回答您的问题,我看到了两种可能的方法来处理您的问题。

  1. 并发编程。保持原样,看看更大的任务是否可以并行化。 (参见 this)。如果支持,则将代码并行化以确保每个核心处理大型任务的特定部分。最后,将结果收集到一个协调核心中并组装最终结果。 (另外:如果考虑 GPU 编程,这可以有效地完成)
  2. Dispatch Smaller Jobs(如问题中给出的):如果您可以管理多个工作人员处理较小的任务,并且最终有一种机制可以将所有事情协调在一起,那么这是一个很好的方法。这可以安排为主从设置。这将使一切变得简单(因为并行处理一个问题有点困难),但您需要将所有事情协调在一起。

关于php - Laravel - 队列 worker ,高 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38441668/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com