Linux Openshift应用程序:";OutOfMemory:Java堆空间;

Linux Openshift应用程序:";OutOfMemory:Java堆空间;,linux,tomcat,openshift,Linux,Tomcat,Openshift,我收到OpenShift应用程序的错误severy:java.lang.OutOfMemoryError:java堆空间。正如错误所暗示的,我需要增加java堆空间。我已经尝试了ssh到我的OpenShift服务器中,并执行了setjava\u OPTS=-Xms1024M-Xmx1024M。尽管错误仍然存在 我正在tomcat7服务器上部署一个.war文件 我应该做些什么来解决这个问题呢?首先,您需要检查现有java进程的堆大小 其次,您需要尝试使用JAVA_OPTS选项或其他方式增加它。进行

我收到OpenShift应用程序的错误
severy:java.lang.OutOfMemoryError:java堆空间
。正如错误所暗示的,我需要增加java堆空间。我已经尝试了ssh到我的OpenShift服务器中,并执行了
setjava\u OPTS=-Xms1024M-Xmx1024M
。尽管错误仍然存在

我正在tomcat7服务器上部署一个
.war
文件


我应该做些什么来解决这个问题呢?

首先,您需要检查现有java进程的堆大小
其次,您需要尝试使用JAVA_OPTS选项或其他方式增加它。进行更改后,检查流程以验证它是否确实增加了堆大小

最后,如果碰撞堆没有帮助,那么按照建议,您需要执行某种级别的分析或使用其他技术进行故障排除。

您使用的齿轮大小是多少?如果它是免费帐户上的小齿轮,那么您一开始只能获得512MB内存。如果需要更多内存,则需要升级到更大的档位,请查看更大的档位有多少内存。

只有stacktrace,几乎不可能识别内存泄漏。尽管发布所有代码也没有意义。您可以尝试分析或使用Java Flight Recorder找出堆中发生的情况,以便打开初始门。在localhost上测试的应用程序在相同的堆大小下不会出现此错误,我假设我在服务器端配置不正确。是的,发生了这种情况。当然,只要您能够访问OOM发生的环境,就应该尝试评测/JFR。问题的解决方案是按照建议使用更大的齿轮。我误解了我分配的空间(假设3个512mb的“齿轮”组合起来可以提供3倍的内存)。监视tomcat JVM让我在某些时候发现对我正在使用的工具箱的api调用加载了约512mb的内存(这个峰值导致了内存不足问题)。谢谢你的建议。