几个月前,我问过这个关于我的api的实现,它使用PHP处理文件,这是一个通过PHP和队列调用的命令行脚本。对于队列,我使用beanstalkd
API每个请求接受一个文件或一组文件(最多5个(。根据大小的不同,处理一个文件需要1-3秒。
我现在的问题是,将请求的每个文件都放在一个单独的作业中,还是将所有文件放在一份作业中,有什么更好的方法?我的处理速度较慢的函数接受一个或多个文件。我的猜测是,我把请求的所有文件都放在处理中,它们将由一个工作人员处理。但如果我把每个文件放在单独的后台工作中,它可能会由自己的工人处理,所以4个文件4个工人——这就是我的想法。不确定这是否正确。
所以,如果我上面的结论是正确的,那么对于很多请求来说,是一次性处理所有文件更好,还是单独添加文件更好?
谢谢。
要在同一秒内处理更多的用户或更多的吞吐量,您需要确保以下几点:
- 有一个以上的工人,通常从一开始就将工人的规模扩大到10人
- 这样你就有10个平行工作者
- 将10条不同的消息放入队列,这样每个工人就可以选择一项工作来处理
- 监视队列,如果有更多的作业不断累积,则添加更多的工作人员
- 监控机器的CPU和Ram状态,如果开始限制大约80%的CPU,您应该考虑添加另一台消耗同一队列中作业的机器
- 您可以有不同的机器来满足不同的需求(SSD用于快速IO,高端CPU用于快速作业,较低的机器用于事务状态等。(