redis - celery 以 redis 作为代理,结果后端使用了太多的 redis 连接

标签 redis celery

我们有一个以 Redis 作为代理和结果后端的 celery 集群,大约有 100 多个服务器和 200 多个队列,目前,redis 连接数(9000+)接近最大连接阈值(10000),并且它当集群中添加新服务器时仍在逐渐增加。

我们依赖celery中的任务状态来实现更多检查,因此我们无法设置ingore_result=True(此方法可以快速减少redis连接,但考虑到我们无法使用它其他函数的限制),并且BROKER_POOL_LIMIT已经设置为0,但是并没有太大的作用,有没有其他方法可以减少redis连接?

最佳答案

我也遇到过使用 Redis 作为代理和结果后端的问题,由于单线程特性,如此巨大的负载 Redis 性能不佳,并且对于每个任务,它都必须将结果保存为单独的键。 您可以尝试重新构建 celery,以使用 AMQP 系统(例如用于代理的 RabbitMq 和用于结果后端的 redis)。 看看这篇文章,它解释得很好 http://techscouter.blogspot.com/2018/05/celery-with-heavy-workloads.html

关于redis - celery 以 redis 作为代理,结果后端使用了太多的 redis 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59476493/

相关文章:

django - celery celerybeat 不滴答作响

python - 将元组的python列表存储在redis排序集中,其中元组的第二个元素用作分数

python - celery 错误 : result. 获取超时

celery 节拍未启动 EOFError ('Ran out of input' )

node.js - NodeJS Socket.io Server<-->服务器通信

javascript - 创建基本分析页面

redis客户端列表重新运行 "cmd=NULL"

python - Django: AttributeError: 'bool' 对象没有属性 'expire'

python - 让 zmq 服务器在 Django 中永远运行?

daemon - 使用 celeryd 作为多个 django 应用程序的守护进程?