2017-05-07 63 views
1

我有一個Clojure Web應用程序,我在Heroku的免費計劃上運行。該應用程序一直運行良好或多或少一個月,但在過去的3天內,日誌顯示此錯誤,該應用程序無法正常工作。錯誤R14(超出內存配額)

Error from Heroku logs

我不能夠在當地重現此錯誤,這裏的一切開始了罰款。

我試着重新啓動應用程序幾次,部署一個新的實例,並擺弄JAVA_OPTS和JAVA_TOOL_OPTIONS,但沒有任何幫助,我堅持相同的錯誤。

該應用程序的整個代碼是here。有沒有人遇到這個錯誤和可能的解決方法?

回答

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'在Heroku的全局設置變種一樣簡單。

1

正如錯誤消息所述,該應用消耗的內存比分配給它的Heroku更多。 Heroku允許您查看應用程序指標,從中找出可能對識別原因有用的圖表。

Heroku在JVM應用程序java-memory-issues中有與內存相關的問題的特別指南。你可能會覺得它很有用。

0

嘗試通過運行

$ heroku config:set JAVA_TOOL_OPTIONS="-Xmx256m" 
+0

這似乎沒有幫助我的具體情況。嘗試了一些像這些https://github.com/rogerallen/tweegeemee/blob/master/project.clj#L15-L20優化,但沒有成功。 – feychou

+1

這可能意味着你有很多本機內存。閱讀https://jkutner.github.io/2017/04/28/oh-the-places-your-java-memory-goes.html – codefinger

相關問題