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

时间:2017-03-14 12:08:52

标签: ruby-on-rails heroku puma

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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