我在VPS上有tomcat应用程序,tomcat有时(大约每月一次)崩溃,catalina.out中有以下错误:
Java (TM)64位服务器VM警告:异常HotSpot java.lang.OutOfMemoryError发生,将信号SIGTERM调度到处理程序-- VM可能需要强制终止。
下面是有关我的配置的一些详细信息:
我在服务器上也有Apache。
我用Munin监控服务器负载,它向我展示了内存和CPU的使用总是稳定的,在崩溃之前没有任何增加。
我还通过java.lang.Runtime类记录java内存的使用情况,这表明jvm总是使用max200Mb内存,崩溃前没有增加。崩溃前的最后一次日志是40秒前,使用的时间是:152 40。
我的web应用程序还运行6-7个线程,从不同的公共API中收集数据。当tomcat启动时,这些线程就会启动,并且它们总是以周期性的睡眠方式运行。
你能告诉我它为什么坠毁吗?我怎么才能找到原因?
发布于 2012-06-22 12:00:41
top,查看进程占用了多少内存。/var/log/messages在崩溃前后的时间段内是否有异常事件。发布于 2017-08-07 10:52:51
您可以编辑service.bat或service.sh文件(可以在deistribution的bin文件夹中找到),并将以下两个jvm参数放入
XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=<PATH_TO_WRITE_DUMP>PATH_TO_WRITE_DUMP应该具有必要的权限,一旦您获得了堆转储文件(在发生OutOfMemory问题时将生成),可以手动或通过一些第三方工具对其进行分析。您可以在jvisualvm中加载该文件并进行一些分析,或者您可以使用eclipse的内存分析插件,它非常有用,并给出了一些潜在的内存泄漏嫌疑人和控制树(即哪个对象主导了堆)--这可能是一个很好的起点。
发布于 2017-09-09 16:13:47
增加tomcat java启动内存,如:设置JAVA_OPTS=-server -Xms256m -Xmx512m
https://stackoverflow.com/questions/11095094
复制相似问题