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

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

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

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

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

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

>工人数量和并发因素.

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

当然,根据您在特定时间窗口内需要执行的任务总数,您需要确定启动和运行所需的工作人员/服务器数量.

>经纪人,这种架构风格的单点故障.

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值