错误R14(超出内存配额)

时间:2017-05-07 09:19:02

标签: memory heroku clojure

我有一个Clojure Web应用程序,我在Heroku的免费计划上运行。该应用程序一个月或多或少运行良好,但在过去3天内,日志显示此错误且应用程序无法正常运行。

Error from Heroku logs

我无法在本地重现此错误,其中一切都很好。

我尝试多次重启应用程序,部署新实例并摆弄JAVA_OPTS和JAVA_TOOL_OPTIONS,但没有任何帮助,我遇到了同样的错误。

该应用程序的整个代码是here。有没有人遇到过这个错误以及解决它的可能方法?

3 个答案:

答案 0 :(得分:1)

正如错误消息所示,该应用程序消耗的内存比Heroku为其分配的内存更多。 Heroku允许您查看应用程序指标,图表可能有助于确定原因。

Heroku有一个关于JVM应用程序java-memory-issues中与内存相关的问题的特殊指南。您可能会发现它很有用。

答案 1 :(得分:1)

尝试通过运行

来设置最大堆大小
$ heroku config:set JAVA_TOOL_OPTIONS="-Xmx256m"

答案 2 :(得分:1)

我找到了超出记忆的罪魁祸首。 Heroku在启动时运行的命令没有使用jar文件。之前我有web: lein ring server-headless并且我更改它以在Procfile中执行jar web: java -jar target/<app-name>-standalone.jar

由于我使用的是ring,因此在启动之前我还有Heroku运行lein ring uberjar而不是lein uberjar:这就像将LEIN_BUILD_TASK='ring uberjar'设置为全局配置var一样简单Heroku的。

相关问题