我想为JVM创建一个nagios看门狗,看看JVM何时耗尽内存并重新启动它。如何使用JMX监控在内存不足时重新启动JVM?
目前我能够设置JVM允许JMX,但我不知道如何检测OutOfMemory条件并重新启动它。
/check_jmx -U service:jmx:rmi:///jndi/rmi://127.0.0.1:1100/jmxrmi -O "java.lang:type=Memory" -A "HeapMemoryUsage" -K used -I HeapMemoryUsage -J used -vvvv
JMX OK HeapMemoryUsage.used=957414288{committed=2415984640;init=2147483648;max=2863333376;used=957414288}
https://github.com/tcurdt/nagios-check-jmx
不幸的是,标准的jdk无法检测到jvm已经命中了OOM。在我们的产品中经历了这个。我最终安装了一个日志处理程序,它检查包含OOME的LogRecords。只要没有代码吞下错误而不报告它就可以工作。 – jtahlborn 2012-07-25 16:42:31
我确实通过java工具API找到了一些有前途的API,但是我总结出任何解决方案都会涉及在工具代理中实现本机代码,这对我们来说是“不行”。 – jtahlborn 2012-07-25 16:45:22