我们有一个python应用程序和一些芹菜工人。在
我们使用下一个命令启动芹菜工人:
python celery -A proj worker --queue=myqueue -P prefork --maxtasksperchild=500
我们和芹菜工人有两个问题。在
我们仍在调查内存泄漏,但由于它是遗留代码,因此很难找到原因,解决此问题需要一些时间。为了防止泄漏,我们使用--maxtasksperchild
,因此每个工作进程在处理500个事件后都会重新启动自己。它工作正常,记忆增长到一定程度。在
第二个问题有点难。为了处理芹菜队列中的所有事件,我们必须启动更多的工人。但是使用prefork
时,每个进程占用大量内存(在我们的例子中大约为110M),因此我们要么需要大量服务器来启动正确数量的工作线程,要么我们必须从prefork
切换到{
在本例中,我们将使用相同数量的内存(每个进程大约110M),但每个进程将有10个工作线程,这将大大提高内存效率。但问题是我们仍然有问题1(内存泄漏),我们不能使用--maxtasksperchild
,因为它不能与{
有什么想法可以用--maxtasksperchild
和{
max-memory-per-child
。希望它能与所有并发模型一起工作。我还没试过。在相关问题 更多 >
编程相关推荐