Laravel、Queue、Horizon 和 >10 台服务器(worker) - 创建数百万个工作岗位需要很长时间



我需要创造几个1000万个就业机会。

我已经试过了for-loopsBus::batch([]),不幸的是,作业的创建比10个服务器/工人处理作业的时间要长。这意味着工人必须等到工作出现在数据库(redis等)。使用Redis -benchmark,我可以了解到Redis不是问题。

无论如何……是否有一种方法可以批量(而不是批量)创建作业?我在想这样写:

INSERT INTO ... () VALUES (), (), (), (), ...

无论如何,由于某种原因,在for循环或批处理中创建数百万个作业似乎非常慢。可能是因为每次只有一个查询,而不是一个&;upsert&;

对于任何帮助,我将非常感激!

写一百万条记录在任何情况下都有点慢。我建议使用以下几种方法来最大化队列性能:

  1. 创建将创建所有其他作业的作业
  2. 仅使用QUEUE_CONNECTION=redis为您的队列,因为redis在RAM中存储数据是最快的。
  3. 在响应已处理后创建作业

相关内容

最新更新