【问题标题】:Is it better to put multiple files in background job or a single file?将多个文件放在后台作业或单个文件中更好吗?
【发布时间】:2019-01-11 05:49:44
【问题描述】:

几个月前,我向this 询问了我的 api 的实现,它使用 PHP 处理文件,这是一个通过 PHP 和队列调用的命令行脚本。对于队列我使用 beanstalkd

API 接受每个请求的一个文件或一组文件(最多 5 个)。处理一个文件需要 1-3 秒,具体取决于大小。

我现在的问题是,将请求的每个文件放在单独的作业中还是将所有文件放在一个作业中会更好?我的慢速处理函数接受一个或多个文件。我的猜测是我将请求的所有文件都放在处理中,它们将由一名工作人员处理。但是,如果我将每个文件放入单独的后台作业中,它可能会由自己的工作人员处理,因此 4 个文件 4 个工作人员 - 这就是我的想法。不确定这是否正确。

那么如果我的上述结论是正确的,那么对于大量请求一次处理所有文件或将它们添加单独的工作人员会更好吗?

谢谢。

【问题讨论】:

  • 请解释一下“更好”是什么意思;这个问题可能被认为“过于宽泛”或“主要基于意见”,因此会被标记。
  • 更好的意思是平台可以同时处理更多用户

标签: php rest api microservices beanstalkd


【解决方案1】:

要在同一秒内处理更多用户或更多吞吐量,您需要确保多件事:

  • 拥有超过 1 个工人,通常从一开始就将工人的规模扩大到 10 个
  • 这样你就有 10 个并行工作器
  • 将 10 条不同的消息放入队列中,以便每个工作人员选择要处理的工作
  • 监控队列,如果有更多工作继续累积,请添加更多工作人员
  • 监控机器 CPU 和 Ram 状态,如果开始限制大约 80% 的 CPU,您应该考虑添加另一台使用同一队列中的作业的机器
  • 您可以使用不同的机器来满足不同的需求(SSD 用于快速 IO,高端 CPU 用于快速作业,较低的机器用于事务状态等)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2018-03-24
    • 2023-04-03
    • 1970-01-01
    • 2020-06-25
    相关资源
    最近更新 更多