我们有一个以 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/