如何在gevent上运行Celery来控制内存



我们使用gevent运行Celery,尽管内存消耗开始很大,但随着时间的推移,内存使用量会增加。假设我们无法追踪内存膨胀或泄漏的原因,那么有没有一个控制内存使用的好方法?

在prefork上运行时,我们使用了--max-tasks-per-child--max-memory-per-child,但它们似乎与gevent不兼容(Celery文档中说它只适用于prefork:https://docs.celeryproject.org/en/stable/userguide/workers.html#max-每个子设置的任务(。

我们是否可以重新创建该功能,以便在内存过高时Celery进程重新启动?

您可以构建一个cron作业,以您选择的频率重新启动芹菜工人。请确保启动热关机,否则将丢失当前正在运行的任何任务。您还可以考虑降低并发性,或者重新评估是否应该使用preforked。

最新更新