我通过桌面PC上运行的grails应用程序运行了80,000个http调用,并且没有失败。在cloudfoundry上,相同的应用程序在大约3000次http调用后耗尽内存。该应用程序使用MySql,Mongodb和RabbitMQ。在Cloudfoundry上,我使用VMC命令将内存增加到1G。在测试程序运行时,我可以使用VMC stats命令查看内存使用情况,内存使用量增长到1G,应用程序失败。我在我的本地机器上使用Grails 2.0.1。
可能导致此问题的原因是什么?
答案 0 :(得分:1)
您可能会从this post中获得一些用途,因为您的测试应用可能非常像批量应用。
在本地运行时,应使用jconsole监视应用程序,并将分配给java的本地内存设置为与cloudfoundry相同的值,以查看是否可以重现错误。如果jconsole表明你永远不会放弃内存,那么你可能会发生泄漏并且不允许收集垃圾。
答案 1 :(得分:0)
对于Java Web应用程序,您还需要设置Xmx:
vmc set-env APP JAVA_OPTS="-Xmx1024M"