我有一個Clojure Web應用程序,我在Heroku的免費計劃上運行。該應用程序一直運行良好或多或少一個月,但在過去的3天內,日誌顯示此錯誤,該應用程序無法正常工作。錯誤R14(超出內存配額)
我不能夠在當地重現此錯誤,這裏的一切開始了罰款。
我試着重新啓動應用程序幾次,部署一個新的實例,並擺弄JAVA_OPTS和JAVA_TOOL_OPTIONS,但沒有任何幫助,我堅持相同的錯誤。
該應用程序的整個代碼是here。有沒有人遇到這個錯誤和可能的解決方法?
我有一個Clojure Web應用程序,我在Heroku的免費計劃上運行。該應用程序一直運行良好或多或少一個月,但在過去的3天內,日誌顯示此錯誤,該應用程序無法正常工作。錯誤R14(超出內存配額)
我不能夠在當地重現此錯誤,這裏的一切開始了罰款。
我試着重新啓動應用程序幾次,部署一個新的實例,並擺弄JAVA_OPTS和JAVA_TOOL_OPTIONS,但沒有任何幫助,我堅持相同的錯誤。
該應用程序的整個代碼是here。有沒有人遇到這個錯誤和可能的解決方法?
我找到了突破內存的罪魁禍首設置你的最大堆大小小。 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的全局設置變種一樣簡單。
正如錯誤消息所述,該應用消耗的內存比分配給它的Heroku更多。 Heroku允許您查看應用程序指標,從中找出可能對識別原因有用的圖表。
Heroku在JVM應用程序java-memory-issues中有與內存相關的問題的特別指南。你可能會覺得它很有用。
嘗試通過運行
$ heroku config:set JAVA_TOOL_OPTIONS="-Xmx256m"
這似乎沒有幫助我的具體情況。嘗試了一些像這些https://github.com/rogerallen/tweegeemee/blob/master/project.clj#L15-L20優化,但沒有成功。 – feychou
這可能意味着你有很多本機內存。閱讀https://jkutner.github.io/2017/04/28/oh-the-places-your-java-memory-goes.html – codefinger