您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 在Celery中使用许多队列会产生重大的性能影响

5b51 2022/1/14 8:22:01 python 字数 3535 阅读 525 来源 www.jb51.cc/python

当芹菜工人从多个(或许多个)队列中撤离时,是否应该记住实质性的影响?例如,如果我的系统被设计成使工作人员从10到15个队列而不是仅仅1或2,那么是否会有显着的性能损失?作为后续行动,如果其中一些队列有时是空的怎么办?最佳答案关于队列限制的问题的简短答案是:不要担心多个队列不会更糟或更好,经纪人的目的是处理大量的队列.当然,在许多用例中你不需要这么多,除了非常

概述

当芹菜工人从多个(或许多个)队列中撤离时,是否应该记住实质性的影响?例如,如果我的系统被设计成使工作人员从10到15个队列而不是仅仅1或2,那么是否会有显着的性能损失?作为后续行动,如果其中一些队列有时是空的怎么办?

不要担心多个队列不会更糟或更好,经纪人的目的是处理大量的队列.当然,在许多用例中你不需要这么多,除了非常先进的用例.空队列不会产生任何问题,它们只占用代理上的少量内存.

不要忘记你还有其他的东西,比如交换和绑定,你也没有真正的限制,但是在使用之前你的每一个性能含义都要好一些(TOPIC交换将使用比直接更多的cpu)一个例如)

为了给您一个更完整的答案,让我们从更通用的角度来看一下性能主题.

在查看基于像Celery这样的消息传递的分布式系统时,从性能的角度来看有两个主要的主题要分析:

>工人数量和并发因素.

您可能已经知道每个芹菜工作者都有一个并发参数来设置可以同时执行多少任务,这应该与服务器容量(cpu,RAM,I / O)相关联,并且当然也基于特定使用者将执行的任务类型(取决于它将消耗的队列).

当然,根据您在特定时间窗口内需要执行的任务总数,您需要确定启动和运行所需的工作人员/服务器数量.
>经纪人,这种架构风格的单点故障.

代理,特别是RabbitMQ,设计用于管理数百万条消息而没有任何问题,但是需要存储更多内存的消息将被使用,并且更多消息将用于路由它将使用的更多cpu.

这台机器也应该很好地调整,如果可能的话,应该在high availability.

当然,要避免的主要事情是消息的消耗率低于生成消息,否则您的队列将继续增长,您的RabbitMQ将爆炸.在这里你可以找到some hints.

在某些情况下,您可能还需要增加在特定时间范围内执行的任务数量,但仅在响应请求峰值时才会增加.这个架构的好处在于你可以监控队列的大小,当你理解为快速增长时,你可以动态创建新的机器,并且已经配置了芹菜工作者,而不是在不需要时关闭它.这是一种非常节省成本和高效的方法.

一个提示,记得不要在RabbitMQ中存储芹菜任务结果.

总结

以上是编程之家为你收集整理的python – 在Celery中使用许多队列会产生重大的性能影响全部内容,希望文章能够帮你解决python – 在Celery中使用许多队列会产生重大的性能影响所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶