Raj*_*ain 9 python django celery
我在 celery 服务器上运行一个原子事务,它消耗大量内存,但任务完成后内存不会释放。
对我有用的解决方案是在 N 个任务后杀死 celery 工作人员,即使用 - CELERYD_MAX_TASKS_PER_CHILD。
这个问题还有其他解决办法吗?如果 celery 每天收到大约 10,000 个任务,那么为CELERYD_MAX_TASKS_PER_CHILD设置多少合适
Ali*_*ari 5
关于 celery有一个悬而未决的问题,可能值得一试。
您的解决方法非常公平,并且是我们在自己的业务中使用的并且简单有效。值得注意的是,celery 使用工作池,这意味着它不会在每个任务后杀死工作进程,并将其重用于下一个任务,这显然意味着随着时间的推移,进程级资源可能会泄漏。
您可以测量进程启动和终止所需的时间。例如,如果您的任务需要 20 秒,进程启动到最终终止需要 2 秒,并且您可以容忍 5% 的开销,那么您可以将参数设置CELERYD_MAX_TASKS_PER_CHILD为 2。这取决于您可以容忍的开销和泄漏量。
CELERYD_MAX_TASKS_PER_CHILD
归档时间:
5 年,11 月 前
查看次数:
5189 次
最近记录:
5 年,10 月 前