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

前端之家收集整理的这篇文章主要介绍了python – 在Celery中使用许多队列会产生重大的性能影响前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

最佳答案
关于队列限制的问题的简短答案是:

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

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

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

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

>工人数量和并发因素.

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

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

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

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

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

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

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

原文链接:https://www.f2er.com/python/438552.html

猜你在找的Python相关文章