Python 芹菜工人的水平规模导致相同的加工时间

Python 芹菜工人的水平规模导致相同的加工时间,python,docker,rabbitmq,celery,samba,Python,Docker,Rabbitmq,Celery,Samba,当我们水平扩展芹菜时(增加了实例的数量),芹菜正在经历一种意想不到的行为 当前任务的处理时间刚刚超过1小时,如果我们扩展到16倍worker1和16倍worker2,或者有4倍worker1和4倍worker2,那么这也是我们增加工作实例的时间 在普罗米修斯/grafana中加入度量后,我们可以看到磁盘读取,samba的写入和网络不是瓶颈,工人和代理上的cpu和ram也没有达到最大值。我们还看到任务正在成批完成,并等待成批任务完成,然后再开始下一个任务,而不是连续完成,这会导致在处理再次开始之前

当我们水平扩展芹菜时(增加了实例的数量),芹菜正在经历一种意想不到的行为

当前任务的处理时间刚刚超过1小时,如果我们扩展到16倍worker1和16倍worker2,或者有4倍worker1和4倍worker2,那么这也是我们增加工作实例的时间

在普罗米修斯/grafana中加入度量后,我们可以看到磁盘读取,samba的写入和网络不是瓶颈,工人和代理上的cpu和ram也没有达到最大值。我们还看到任务正在成批完成,并等待成批任务完成,然后再开始下一个任务,而不是连续完成,这会导致在处理再次开始之前短暂暂停

我的问题是,这是芹菜的预期行为吗?当我横向扩展时,我期望我的总处理时间减少

我们的设置:

Rabbitmq Broker 3.6.14 8GB RAM 2CPU  
Celery 4.1.0 (apmq)  
Python application  
2 queues  
8x worker1 8GB RAM 2CPU  
8x worker2 8GB RAM 2CPU  
all in docker containers  
writing to samba share  
芹菜配置:
worker\u prefetch\u乘数=1

运行命令:

  • worker1:
    Cellery-A节点\u从工作程序-n工作程序@%h--loglevel=debug--concurrency=2

  • worker2:
    Cellery-A节点\u从工作程序-n工作程序@%h--loglevel=debug--concurrency=2-Q队列2

  • 测试配置:gevent,Ofair

  • 处理背景:消息被发送到中心队列,例如queue1

工人1 将转到queue1并从中检索消息,然后运行应用程序,该应用程序从samba共享(输入)上的目录检索文件,并将该文件转换为特定的文件类型,然后将其放到samba共享(输出)上 worker1还将异步将消息写入queue2

工人2
针对queue2中的文件运行应用程序并写入nosql后端。

虽然EC2上的通用SSD磁盘具有稳定的IOPS,但这是我们的问题


增加samba实例上的IOPS并转移到配置IOPS,同时增加实例大小,为我们提供了更好的吞吐量

现在您的问题完全不清楚。我试着帮你格式化,但我真的不确定你的问题是关于什么的。尽量用最简单的方式表达它。读这篇文章是个好主意:谢谢你的格式,我会看看你提供的链接,然后修改我的问题