Heroku应用程序错误 - 部署时超出内存配额 - Scout显示4,804,423个分配

Pet*_*sen 6 memory-management ruby-on-rails heroku webpack

我试图在Heroku上的Rails应用程序中找到内存膨胀.

我已经阅读了一堆关于内存膨胀的文章,并尝试了Scout来诊断问题.

我正在关注Christoffers关于Heroku崛起记忆的问题,但我有一个不同的问题.我几乎总是在部署之后,然后内存使用率上升,我的应用程序中断.

以下是Heroku Metrics的一个例子: 在此输入图像描述

正如您所看到的,部署已完成,然后在第一次访问后应用程序正在中断.

我已经对我能够进行基准测试(检查了我的查询),但在开发过程中没有显示出任何缓慢.此外,它似乎不是一个控制器,它只是在部署中断后使用的第一个控制器.我已经尝试了几个,当它们第一次加载时它们都会破坏.

Scout Dashboard - Memory Allocation Breakdown将这显示为CategoriesController的超时请求示例:

Scout Dashboard  - 内存分配细分

部分和布局在图像下应该呈现


系统

我正在运行Rails 5.1.4,并为Angular 2安装并配置了Webpacker.这意味着我在我的root中添加了一个Procfile:

web: bundle exec puma -p $PORT 这是Heroku文档推荐的

应用程序正在进行部署,但有一些小错误 ... has incorrect peer dependency ...


健康和生病的日志

我试图找到一个健康的Heroku日志和一个生病的Heroku日志.

如果您有兴趣,请询问.


工人数量

我已经阅读了Ruby Memory Use这篇文章并尝试将我的工作人员数减少到1 config/puma.rb,但没有结果.



更新!

1.Heroku上内存使用的奇怪行为:

在此输入图像描述

它是在每天重启大约100 MB之后开始的,但是在超时(第一次访问)之后,内存使用量JUMPS低于500 MB.

  1. @grizzthedj提到了公共文件夹.由于PDF.js插件很重,它是27.1 MB .

我正在寻找帮助来找到这个问题.这可能是什么?你知道吗 - 让我尝试吧!

我已经尝试过我发现的可能,但没有任何帮助.

任何帮助将不胜感激.

您可以在我的Github页面上找到该应用程序

gri*_*edj 2

这里可能有几种可能性。

首先,我怀疑您的 webpacker 构建管道可能存在问题。

在您的帖子中,您提到pdf.js部署时的大小为 27.1 MB。当我从网站下载该文件时,它只有 ~514 KB。

我不知道你的 webpacker 构建任务在做什么,但我怀疑它可能会无意中修改这个文件(也许通过一些通配符规则)。

其次,您的目录中还有 3 个其他.js文件/public/packs/,每个文件大小为 7+ MB。光是这个就将近 50 MB .jspdf.js您的公用文件夹中还有重复的文件:

/public/pdfjs/build/pdf.js
/public/pdf_categories/build/pdf.js 
Run Code Online (Sandbox Code Playgroud)

很难判断这些是否是唯一的问题,但对于初学者来说,我会执行以下操作(如果您还没有这样做):

  1. 仔细检查您的 webpacker 是否没有向您的 pdf.js 添加任何膨胀
  2. 使用 webpacker 来缩小你的.js文件.css
  3. 确保您对所有静态资源使用gzip 压缩。