使用celery,我已经为Redis创建了监听器,用于将所有写入事件都发送到Redis。基于这些事件,我将触发芹菜任务将数据从Redis迁移到DB。我使用了并发为1000的eventlet池。另外,我有5个芹菜队列来处理我的数据。
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,但我的工作人员仍在延迟完成任务。
有人能帮助解决这个问题吗?实际上,我对芹菜是个新手:)
发布于 2019-12-26 03:12:02
有时并发性并不是加速任务消耗的主要因素。当这些任务被处理时。实际上,过多的并发可能会导致许多上下文切换和减慢速度,请监控服务器CPU和内存,以检查它们是否没有被任务压垮,并找到最佳数量。对于CPU受限的任务,我建议使用更多的工作线程而不是并发线程,而对于I/O受限的任务,您可以使用并发线程
https://stackoverflow.com/questions/59457494
复制相似问题