芹菜工作者的任务处理被延迟

问题描述 投票:0回答:1

[借助芹菜,我为Redis创建了侦听器,以将所有写入事件都获取给Redis。根据事件,我将触发celery任务,以将数据从Redis迁移到DB。我正在使用事件池和并发1000。此外,我有5个celery队列用于处理数据。

celery -A proj worker -l info -P eventlet -c 1000 -Q event_queue,vap_queue,client_queue,group_queue,ap_queue

[这里,我面临的问题是,侦听器能够从Redis接收所有写事件,而工作程序能够从侦听器接收任务。但是,芹菜工作者在处理大量数据时会延迟。 (例如,每个队列每10秒我将接收800个任务)

我已经尝试通过将并发性提高到更高的值,将池从eventlet更改为gevent并将预取乘数更改为1。但是,我的工作人员正在延迟完成任务。

有人可以帮助解决这个问题吗?我实际上是芹菜的新手:)

redis django-celery gevent eventlet
1个回答
0
投票

有时并发不是加快任务消耗的主要因素。处理这些任务时。过多的并发会导致许多上下文切换并减慢运行速度,监视服务器CPU和内存以检查它们是否不被任务淹没并找到最佳数目。对于与CPU绑定的任务,我会说比并发线程更喜欢工作线程;对于与I / O绑定的任务,您可以有并发线程

© www.soinside.com 2019 - 2024. All rights reserved.