如何调试ajax请求引发“错误R15(内存配额大大超出)”

我在Heroku上有一个Rails应用程序崩溃, Error R15 (Memory quota vastly exceeded)

我已经将此问题跟踪到包含多个异步请求的页面。 这些错误似乎与构建远程数据表的ajax请求一致。

问题是,我无法弄清楚为什么会出现这些错误。

我想也许ajaxified数据表后面的数据库查询和控制器操作可能运行缓慢。 但是,如果我使用miniprofiler在开发中检查这些,请求看起来非常有效。

然后我想,也许服务器正在接收多个同时发出的请求,这就是重载了heroku dyno。 但我把dynos提升到一个非常高的数字,仍然看到错误。

什么是开始识别和调试导致此内存错误的明智方法? 我以前不必解决这样的问题。

在Heroku上为每个dyno分配内存,因此如果它是代码级别,添加更多dynos可能实际上不会解决问题,因为它会导致每个dyno超出其内存限制,单独花费你很多钱并且实际上没有解决问题。

你最好在horozontally缩放并使用Performance-L dynos。 这将使每个dyno增加到14GB的内存。 然后,您可以使用指标查看正在使用的内存量。 如果用户内存量设法耗尽所有14GB,那么您的某个依赖项中可能存在内存泄漏。