首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用maxtasksperchild和eventlet

使用maxtasksperchild和eventlet
EN

Stack Overflow用户
提问于 2016-05-24 19:29:35
回答 1查看 519关注 0票数 3

我们有一些芹菜工人的蟒蛇应用程序。

我们使用下一个命令启动芹菜工人:

代码语言:javascript
运行
复制
python celery -A proj worker --queue=myqueue -P prefork --maxtasksperchild=500

我们对芹菜工人有两个问题。

  1. 我们的记忆泄露了
  2. 我们的工作量很大,我们需要大量的工人来快速处理每件事。

我们仍然在调查内存泄漏,但是由于它是遗留代码,很难找到原因,解决这个问题需要一些时间。为了防止泄漏,我们使用--maxtasksperchild,因此每个工作人员在处理完500个事件后都会重新启动自己。而且它工作得很好,记忆增长到了某种程度。

第二个问题有点困难。为了处理我们的芹菜队列中的所有事件,我们必须启动更多的工人。但是对于prefork,每个进程占用大量内存(在我们的例子中约为1.1亿),所以我们要么需要大量服务器来启动正确的工作人员,要么我们必须从prefork切换到eventlet

代码语言:javascript
运行
复制
python celery -A proj worker --queue=myqueue -P eventlet --concurrency=10

在本例中,我们将使用相同数量的内存(每个进程约110米),但每个进程将有10个工作人员,这大大提高了内存效率。但问题是,我们仍然存在#1 (内存泄漏)问题,我们不能使用--maxtasksperchild,因为它不能与eventlet一起工作。

任何想法如何使用像--maxtasksperchildeventlet一样的东西

EN

回答 1

Stack Overflow用户

发布于 2016-05-25 12:01:09

  • 升级芹菜,我刚刚快速扫描了主代码,他们承诺max-memory-per-child。希望它能与所有并发模型一起工作。我还没试过呢。
  • 设置进程监控,向内存阈值以上的工作人员发送优美的终止信号。为我工作。
  • 对照组在记忆有限的情况下进行芹菜运动。为我工作。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37422280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档