我得到“Java HotSpot(TM)64位服务器VM警告:异常java.lang.OutOfMemoryError发生调度信号SIGTERM到...

栏目: Java · 发布时间: 5年前

内容简介:翻译自:https://stackoverflow.com/questions/11095094/i-get-java-hotspottm-64-bit-server-vm-warning-exception-java-lang-outofmemor

我在VPS上有tomcat web应用程序,tomcat有时(大约每月一次)崩溃,catalina.out中出现以下错误:

Java HotSpot(TM) 64-Bit Server VM warning: Exception java.lang.OutOfMemoryError occurred dispatching signal SIGTERM to handler- the VM may need to be forcibly terminated.

以下是我的配置的一些细节:

> VPS:debian-5.0-x86_64

> RAM:2.5 gb,

>虚拟处理器:8

> HDD:60gb硬盘 – 70%免费

> Tomcat 7.0

> java -version:

java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8.13) (6b18-1.8.13-0+squeeze1)
OpenJDK 64-Bit Server VM (build 14.0-b16, mixed mode)

> Java参数:-Xms512m -Xmx1024m

我在该服务器上也有Apache-PHP.

我正在使用Munin监视服务器负载,它向我显示内存和CPU使用率始终稳定,并且在崩溃之前没有任何增加.

我也通过java.lang.Runtime类记录 java 内存使用情况,它显示jvm总是使用max200Mb内存,并且在崩溃之前没有增加.崩溃前的最后一个日志是40秒前,那个时间使用的内存是:152Mb.

我的Web应用程序还运行6-7个线程,用于从不同的公共API收集数据.这些线程在tomcat启动时启动,并且它们始终以定期休眠运行.

你能告诉我它崩溃的原因吗?我怎么才能找到原因?

让我们解开这个:

Exception java.lang.OutOfMemoryError occurred dispatching signal SIGTERM to handler- the VM may need to be forcibly terminated.

首先,看起来像JVM(Tomcat)进程发送了一个SIGTERM信号.它必须是JVM外部的东西. JVM不向自身1发送信号.

所以你需要弄清楚这是做什么的.我猜第一个猜测就是OOM杀手……但是OOM杀手使用SIGKILL而不是SIGTERM. JVM永远不会看到SIGKILL的到来!

(您可以通过查看“/ var / log / messages”…或系统记录内核消息的任何地方来确认它不是OOM杀手.请参阅 How to Configure the Linux Out-of-Memory Killer )

如果它不是OOM杀手,那么有几种方法可以找到信号源:

> Finding the source of signals on Linux with strace, auditd, or systemtap

一旦你掌握了信号的来源,你就会有线索的原因.

另一个值得注意的事情是在处理SIGTERM时发生了OutOfMemoryError.这强烈暗示(对我而言)根本原因是某些东西检测到Tomcat使用了太多内存,并且发送了一个SIGTERM以使其消失(干净利落).我猜想当时发生的事情是JVM进入操作系统要求更多的内存(处理SIGTERM)并且操作系统显示“否”,并且JVM抛出OutOfMemoryError.不幸的是,JVM现在处于无法彻底退出或恢复的状态.因此它说“虚拟机可能需要被强行终止”.

无论如何.这看起来像是一个常见的Java问题的一个相当不寻常的表现.您很可能在Tomcat中运行的webapps中存在泄漏内存的错误.如果是这种情况,唯一真正的解决方案是找到并修复错误. (增加堆大小……如果可能的话……只会解决问题.它可能会减少崩溃之间的间隔,但不太可能阻止它们.)

假设你准备好咬紧牙关:

> How to find a Java Memory Leak

1 – 除非在本机代码中做某些事情……

翻译自:https://stackoverflow.com/questions/11095094/i-get-java-hotspottm-64-bit-server-vm-warning-exception-java-lang-outofmemor


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Tomcat与Java Web开发技术详解

Tomcat与Java Web开发技术详解

孙卫琴 / 电子工业出版社 / 2004-4-1 / 45.00元

《Tomcat与Java Web开发技术详解》编辑推荐:Jakarta Tomcat服务器是在SUN公司的JSWDK(JavaServer Web DevelopmentKit,SUN公司推出的小型Servlet/JSP调试工具)的基础上发展起来的一个优秀的Java Web应用容器,它是Apache-Jakarta的一个子项目。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的J......一起来看看 《Tomcat与Java Web开发技术详解》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具