django - Heroku Web dyno 运行完全达到内存限制吗?

标签 django memory-management heroku memory-leaks

想看看是否有人对诊断我从 django 应用程序的 Heroku 日志中的 Web dynos 收到的 Heroku 错误 R14(超出内存配额)错误有任何建议或进一步阅读。

示例日志是:

heroku[web.1]: source=web.1 dyno=heroku.16810889.deec8406-c082-445d-a047-d0026849fd5e sample#load_avg_1m=0.01 sample#load_avg_5m=0.03 sample#load_avg_15m=0.04
heroku[web.1]: source=web.1 dyno=heroku.16810889.deec8406-c082-445d-a047-d0026849fd5e sample#memory_total=512.06MB sample#memory_rss=511.84MB sample#memory_cache=0.00MB sample#memory_swap=0.22MB sample#memory_pgpgin=380186624pages sample#memory_pgpgout=364599pages
heroku[web.1]: Process running mem=512M(100.0%)
heroku[web.1]: Error R14 (Memory quota exceeded)

一些背景信息、观察结果和我尝试过的事情:

  1. 大部分内存被 memory_rss 消耗(在 google 上搜索 heroku“memory_rss” 并没有找到太多)
  2. 缩放或取消缩放 Web dyno 的数量没有任何效果,每个新的 Web dyno 很快就会达到 512M (100%)。但它总是停在 100%,并且不会更高。重新启动测功机只能在 10-15 分钟内缓解该问题。
  3. 此问题仅影响网络动态。我有一个 celery 调度程序和一个运行良好的 celery worker 测功机。 celery.1 内存总量徘徊在 100MB 左右。
  4. 这是我来自 New Relic 的实例破折号:

enter image description here

我们还在不同的 Heroku 实例(临时服务器)上运行了完全相同的代码,并且内存从未超过 160MB,因此它似乎是特定于服务器的(至少在某种程度上)。

关于我下一步应该去哪里有什么建议吗?我还可以提供哪些其他有用的信息?谢谢

最佳答案

有点荒谬,但追溯到该应用程序用于用户个人资料头像的 django-avatar 问题。应用中任何页面的响应时间几乎有 50% 花费在模板的 {% block header %} 中,这是没有意义的,结果是 { avatar } 标签。

未在 settings.py 中为 S3 正确配置 AVATAR_STORAGE_DIR

关于django - Heroku Web dyno 运行完全达到内存限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19234853/

相关文章:

python - 使用 Reportlab 的多个页面 - Django

python - MySQLdb/_mysql.c(29) : fatal error C1083: Cannot open include file: 'mysql.h' : No such file or directory

c# - 如何测量单个对象在 .NET 中占用的内存量

c++ - 类实例之间共享的类内部的 `enum` 定义,还是为每个实例复制的?

python - 模块未找到错误 : No module named 'django' in Heroku

ruby-on-rails - Heroku 数据库和 amazon s3 加密 key 存储以符合 HIPAA

django - 带有破折号的 LANGUAGE_CODE 不起作用 : "es-mx, es-es, es-ar" but "es" does

java - 截断内存映射文件

django - 在 Heroku 上编辑 Django 文件而不编辑我的数据库文件

jquery - CSS :empty - DOM state sensitive without JS is it possible?