芹菜节拍进程在启动时分配大量内存
Posted
技术标签:
【中文标题】芹菜节拍进程在启动时分配大量内存【英文标题】:Celery beat process allocating large amount of memory at startup 【发布时间】:2018-04-23 12:07:00 【问题描述】:我在 Heroku 上使用 Celery 3.1.23 运行 Django 1.9 网站。 RabbitMQ 用作代理。
重启beat worker后,内存使用量始终在497Mb左右。这会导致频繁出现错误 R14(超出内存配额),因为它很快达到 512Mb 限制。
如何分析启动时内存中的内容? IE。重新启动时如何获取内存中的详细信息?
以下是使用 beta Heroku log-runtime-metrics 获得的内存消耗的详细信息:
heroku/beat.1:
source=beat.1 dyno=heroku.52346831.1ea92181-ab6d-461c-90fa-61fa8fef2c18
sample#memory_total=497.66MB
sample#memory_rss=443.91MB
sample#memory_cache=20.43MB
sample#memory_swap=33.33MB
sample#memory_pgpgin=282965pages
sample#memory_pgpgout=164606pages
sample#memory_quota=512.00MB
【问题讨论】:
你解决了吗?我也有类似的症状。 【参考方案1】:我遇到了同样的问题。环顾四周,我关注了How many CPU cores has a heroku dyno? 和Celery immediately exceeds memory on Heroku。
所以我输入了:
heroku run grep -c processor /proc/cpuinfo -a <app_name>
它返回了8
。所以我在我的 Procfile 行中添加了--concurrency=4
:
worker: celery -A <app> worker -l info -O fair --without-gossip --without-mingle --without-heartbeat --concurrency=4
而且内存使用量似乎几乎被除以 2:
【讨论】:
以上是关于芹菜节拍进程在启动时分配大量内存的主要内容,如果未能解决你的问题,请参考以下文章