我們有一個運行在Heroku上的JVM應用程序,它正在接收超出錯誤R14內存配額。超過Heroku JVM內存配額,但數字不加起來
我們正試圖瞭解內存在哪裏被花費,但數字並沒有加起來。
下面的日誌:
Process running mem=1174M(114.7%)
» 10:16:28.365 2015-01-21 09:16:28.099931+00:00 heroku web.1 - - Error R14 (Memory quota exceeded) Critical
» 10:16:43.322 2015-01-21 09:16:42.836517+00:00 app web.1 - - measure.mem.jvm.heap.used=272M measure.mem.jvm.heap.committed=546M measure.mem.jvm.heap.max=546M
» 10:16:43.322 2015-01-21 09:16:42.836583+00:00 app web.1 - - measure.mem.jvm.nonheap.used=106M measure.mem.jvm.nonheap.committed=107M measure.mem.jvm.nonheap.max=0M
» 10:16:43.322 2015-01-21 09:16:42.836644+00:00 app web.1 - - measure.threads.jvm.total=136 measure.threads.jvm.daemon=21 measure.threads.jvm.nondaemon=105 measure.threads.jvm.internal=10
» 10:16:43.322 2015-01-21 09:16:42.853114+00:00 app web.1 - - measure.mem.linux.vsz=2489M measure.mem.linux.rss=848M
Heroku的報告中使用1174M
。 heroku-javaagent-1.4
報告下面的指標,合計爲546+107+136/2=721M
。 1174-721=453M
的其餘部分可以在哪裏花費?我們如何繼續排除故障?
我在這裏136個線程,每個512K棧因素,考慮到我們的JVM選項:
-javaagent:heroku-javaagent-1.4.jar=stdout=true,lxmem=true -Xms568m -Xmx568m -Xmn192m -Xss512k -XX:+UseCompressedOops
對2倍賽道1024M內存的運行。
謝謝
感謝您的回答。我確實使用Jetty,可以很容易地做Tomcat切換,會試試看。不要使用Play,而要使用Lift。 – Edi 2015-01-23 10:29:43