草庐IT

java - JVM内存不足如何通过JMX监控重启JVM?

我想为JVM创建一个nagios看门狗,当JVM内存不足并重新启动它时进行监视。目前我能够将JVM设置为允许JMX,但我不知道如何检测OutOfMemory情况并重新启动它。/check_jmx-Uservice:jmx:rmi:///jndi/rmi://127.0.0.1:1100/jmxrmi-O"java.lang:type=Memory"-A"HeapMemoryUsage"-Kused-IHeapMemoryUsage-Jused-vvvvJMXOKHeapMemoryUsage.used=957414288{committed=2415984640;init=214748

java - 通过 HTTP 替代方案访问 JMX

我们使用MX4J通过容器本身的Web界面访问JMX相关操作/属性。我想知道是否有可用的替代方案,因为MX4J的最后一个服务版本是在2006年。我主要是想克服MX4J在处理集合方面的局限性。 最佳答案 我是experimenting一次Jolokia看起来很酷。来自网页:JolokiaisanHTTP/JSONbridgeforremoteJMXaccess.一定要试一试。我成功地使用它创建了一个AJAX/JavaScript仪表板,在可刷新的图表上显示可配置的JMX指标。 关于java-

java - 在独立 JVM 上使用 Spring 注册 JMX MBean

根据Spring文档以及互联网上一些论坛的各种示例配置,我的应用程序上下文文件如下所示:0我在没有任何容器的情况下在纯JVM上运行它。我可以通过JConsole连接到我的进程,但是MBean没有出现。但是,以编程方式注册bean会成功公开它。MBeanServermbeanServer=ManagementFactory.getPlatformMBeanServer();DHdh=newDH(0);mbeanServer.registerMBean(dh,newObjectName("bean:name=dH1"));我试过使用Spring配置,但没有成功。我认为该bean没有注册到可

java - 在 Jetty 上启用远程 JMX

我正在尝试在Windows上运行的Jetty6.1.26实例上启用远程JMX。我尝试了几种方法,但结果总是一样的:当我尝试从jconsole连接到service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi时,我得到“连接被拒绝”。我在Internet上找到了一些指南,但似乎没有人提供帮助。请注意,我正在从“Jetty-Service.exe”包装器独立运行Jetty。如果有人可以建议一种在jetty上启用远程JMX的方法,那就太好了。 最佳答案 我在回答我自己的问题。这是我发现在启用JMX

java - 动态更改@ManagedResource objectName

我正在以编程方式/动态方式创建原型(prototype)bean。我希望启动后的那些bean位于jmx控制台中。我如何区分它们?我正在使用注解来将我的bean添加到jmx中,并且我有@ManagedResource(objectName="bean:name=MybBean")我需要动态注入(inject)objectName。知道我该怎么做吗?这是我的jmx配置: 最佳答案 你可以通过实现org.springframework.jmx.export.naming.SelfNaming来做到这一点:@Component("MyPro

java - 尝试通过 JMX 连接时,本地 Java 进程呈灰色

我在WindowsXP专业机器上运行许多Java进程。当我尝试通过本地JConsole连接到这些进程时,进程显示为灰色。但是我可以在另一台机器上运行相同的进程并通过该机器上的本地JConsole进行连接。两台机器都运行java1.6版本的进程和jconsole。知道为什么这些进程是灰色的吗? 最佳答案 我现在正在与这个问题作斗争,我找到了解决方法:您可以将本地用户的临时目录更改为他们绝对可以访问的目录(例如D:\temp)。确保对您尝试监视的进程和jconsole进程执行此操作。另一件显然会导致问题的事情是用户名中包含大写字母。该目

java - 无法使 Spring JMX NotificationListener 工作

我已经使用Spring使用@ManagedResource注释配置了一个ManagedBean。并且还将JMXNotificationListener映射到此。但我发现监听器永远不会启动/执行。相关配置文件如下:这是MyMBean类的样子:@ManagedResource(description="MyMbean",objectName="com.sample:bean=myMBean")publicclassMyMBean{privatebooleanisAvailable=true;@ManagedAttribute(description="isAvailable",defaul

java - 构建处理 SSL 的 JMXConnectorServer

如何配置默认的JMX连接器以处理来自JMX客户端(例如JConsole)的TLS/SSL安全连接是很好的文档,例如-Dcom.sun.management.jmxremote.port=6789\-Dcom.sun.management.jmxremote.authenticate=false\-Dcom.sun.management.jmxremote.ssl=true\-Djavax.net.ssl.keyStore=/path/to/the/keystore.jks\-Djavax.net.ssl.keyStorePassword=secr3t将JConsole与此连接器一起使用

java - 在生产系统上详分割析 Tomcat 堆

使用JMX控制台分析了一个在tomcat中运行的轻负载Web应用程序后,发现“PSOldGen”增长缓慢但稳定。它从200MB开始,并以大约80MB/小时的速度增长。CPU不是问题,它平均以0-1%的速度运行,但它会在某处泄漏内存,因此在部署后几天会变得不稳定。我如何找出在堆上分配了哪些对象?您知道有什么好的教程或工具吗? 最佳答案 你可以试试jmap,JDKDevelopmentTools之一.您可以使用jhat使用您的网络浏览器查看堆转储的输出。参见thisanswer以获得简短的解释。这经常出现,因此在SO中搜索这些工具应该会

带有 SSL 的 Java JMX 客户端

我使用本教程配置了ApacheTomcat8https://tomcat.apache.org/tomcat-7.0-doc/monitoring.html我生成了SSL证书。JMXServiceURLurl=newJMXServiceURL("service:jmx:rmi:///jndi/rmi://10.16.70.161:9999/jmxrmi");HashMapenvironment=newHashMap();String[]credentials=newString[]{"user","passw"};environment.put(JMXConnector.CREDENT