将多个文件放在后台作业还是单个文件会更好?

时间:2018-08-03 10:41:30

标签: php rest api microservices beanstalkd

几个月前,我问this关于使用php处理文件的API的实现,PHP是通过PHP和队列调用的命令行脚本。对于队列,我正在使用beantalkd

每个请求,API接受一个文件或一组文件(最多5个)。根据大小,处理一个文件需要1-3秒。

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

因此,如果我的上述结论是正确的,那么对许多请求一次处理所有文件还是将它们添加为单独的工作程序,是否更好?

谢谢。

1 个答案:

答案 0 :(得分:0)

要在同一秒内处理更多用户或更多吞吐量,您需要确保以下几点:

  • 有1名以上的工人,通常从一开始就将工人的规模扩大到10名
  • 这样,您有10个并行工作器
  • 将10条不同的消息放入队列,以便每个工人都可以完成一份工作
  • 监控队列,如果更多工作不断累积,请增加更多工作人员
  • 监视计算机的CPU和Ram状态,如果开始限制80%的CPU使用,则应考虑添加另一台使用同一队列中的作业的计算机
  • 您可以拥有满足不同需求的不同计算机(用于快速IO的SSD,用于快速作业的高端CPU,用于事务状态的较低计算机等。)