当前位置:  开发笔记 > 编程语言 > 正文

哪个池类应该在芹菜中使用prefork,eventlet或gevent?

如何解决《哪个池类应该在芹菜中使用prefork,eventlet或gevent?》经验,为你挑选了1个好方法。

我有3个远程工作者,每个人都使用默认池(prefork)和单个任务运行.

单个任务需要2到5分钟才能完成,因为它在许多不同的工具上运行并在ELK中插入数据库.

worker命令: celery -A project worker -l info

我应该使用哪个池类来加快处理速度?

有没有其他方法来提高性能?



1> ACimander..:

有趣的是这个问题滚动了.

我们刚刚从eventlet切换到gevent.Eventlet导致悬挂经纪人关系,最终导致工人陷入困境.

一般提示:

如果你受I/O限制,请使用更高的concurreny,我将从25开始,检查cpu负载并从那里进行调整,目标是为进程提供99.9%的cpu使用率.

如果你的员工队伍增长,你可能想要使用--without-gossip和--without-mingle.

不要使用RabbitMQ作为你的结果后端(redis ftw!),但RabbitMQ是我们的首选经纪人(redis上的amqp仿真和芹菜的hacky async-redis解决方案很臭,引起很多悲痛在我们过去).


调整芹菜工人的更高级选项:

将每个工作进程固定到一个核心,以避免移动进程的开销(taskset是你的朋友)

如果一个工作人员并不总是工作,考虑与一个或两个其他进程共享核心,如果一个进程具有优先级,则使用nice

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有