我有一个Clojure Web应用程序,我在Heroku的免费计划上运行。该应用程序一个月或多或少运行良好,但在过去3天内,日志显示此错误且应用程序无法正常运行。
我无法在本地重现此错误,其中一切都很好。
我尝试多次重启应用程序,部署新实例并摆弄JAVA_OPTS和JAVA_TOOL_OPTIONS,但没有任何帮助,我遇到了同样的错误。
该应用程序的整个代码是here。有没有人遇到过这个错误以及解决它的可能方法?
答案 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的。