1

我有一个在 heroku 上运行的 sidekiq 进程,它在运行一段时间后出现以下错误消息:

错误 R14(超出内存配额)

任何人都可以给我任何关于如何开始诊断发生的事情的指示吗?

没有什么明显的原因可能导致这种情况。

4

2 回答 2

1

我们面临同样的问题,并决定让 Newrelic 承担繁重的工作并帮助我们进行诊断。您可能可以使用一些免费的 Newrelic 计划,但如果它们都没有深入到您的代码中,您可能需要考虑为 Pro 版本支付一个月的费用,以帮助您分析您的应用程序。

我无法进一步帮助您,因为我们即将切换到 Pro(等待 Newrelic 接受该计划)所以没有更多的见解,但认为它可能会帮助您查看它。

如果您不想使用 Newrelic,Heroku 还有一个实验室功能,可以分析内存使用情况并报告到日志,启用它:

heroku labs:enable log-runtime-metrics

然后它将向您显示每个测功机正在使用多少内存。

您遇到的错误是 Heroku 上的内存超出内存配额。Heroku 对此有话要说:

进程超出其内存配额的 Dynos 由日志中的 R14 错误标识。这不会终止进程,但会警告应用程序条件恶化:超过配额使用的内存将换出到磁盘,这会大大降低测功机性能。

此页面有更多信息。

于 2013-11-02T11:46:24.633 回答
0

尝试降低并发性。Sidekiq 默认为 25。我将其降低到 15,它大大减少了内存使用并消除了内存交换错误。

内存使用图

于 2016-05-10T18:50:24.383 回答