芹菜工人的水平尺度导致相同的处理时间

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了芹菜工人的水平尺度导致相同的处理时间相关的知识,希望对你有一定的参考价值。

当我们用芹菜水平扩展时,我们正在经历芹菜的意外行为(增加我们的实例数量)。

我们所执行任务的当前处理时间仅超过1小时,这与我们增加工作人员实例的时间相同,如果我们扩展到16x worker1和16x worker2或者拥有4x worker1和4x worker2。

在将指标汇总到prometheus / grafana后,我们可以看到磁盘读取,写入和网络到桑巴不是瓶颈也是工人和经纪人的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_prefetch_multiplier = 1

运行命令:

  • worker1:celery -A node_slave worker -n worker@%h --loglevel=debug --concurrency=2
  • worker2:celery -A node_slave worker -n worker@%h --loglevel=debug --concurrency=2 -Q queue2
  • 配置测试:gevent,Ofair
  • 处理背景:消息被发送到中央队列,例如queue1,

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

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

答案

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

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

以上是关于芹菜工人的水平尺度导致相同的处理时间的主要内容,如果未能解决你的问题,请参考以下文章

芹菜工人并发

从芹菜任务中获取芹菜工人的名字?

芹菜任务应该在工人迷路时排队

VSCode调试芹菜工人

如何优雅地重启芹菜工人?

结束芹菜工人的任务、时间限制、工作阶段或客户的指示