我使用Celery 3.1.23在Heroku上运行Django 1.9网站。 RabbitMQ用作经纪人。
重新启动节拍工作程序后,内存使用量始终为497Mb左右。这导致频繁出现错误R14(超出内存配额),因为它很快达到512Mb限制。
如何分析启动时内存中的内容?即如何在重新启动时获取内存中的内容的详细信息?
以下是使用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
答案 0 :(得分: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: