我试图通过jstatd监视服务器上运行的所有Java进程。我已经将它设置得足够好,可以与VisualVM连接并查看所有正在运行的进程。大多数显示器工作正常,但是某些东西(特别是CPU使用和MBeans)不显示。相反,它说:
MBeans浏览器 数据不可用,因为无法建立到JMX代理的JMX连接。
我假设问题是应用程序必须通过jstatd RMI注册中心而不是本地注册表“宣布”,所以我尝试了以下(每个这些建议),但仍然不会显示。我尝试过的代码如下:
public class JmxRmiConnectorTest {
public static void main(String[] args) throws Exception {
Registry rmiRegistry = LocateRegistry.createRegistry(9994);
String svc =
"service:jmx:rmi://localhost:9994/jndi/rmi://localhost:1099/connector";
MBeanServer mbeanServer = ManagementFactory.getPlatformMBeanServer();
JMXServiceURL url = new JMXServiceURL(svc);
RMIConnectorServer rmiServer = new RMIConnectorServer(url, null, mbeanServer);
rmiServer.start();
Thread.sleep(100000);
rmiServer.stop();
}
}当通过jstatd看到我的MBeans和CPU使用情况时,如何才能在VisualVM中显示?
发布于 2012-02-20 13:56:06
jstatd与JMX无关。Jstatd是Jvmstat的代理。要获得MBeans和CPU的使用,还需要启用JMX。有关更多详细信息,请参阅JMX远程监控和管理。一旦启用了JMX,VisualVM将自动检测(通过jvmstat)它也可以使用JMX,它将在一个地方显示来自jvmstat和JMX的数据。
发布于 2014-08-03 10:42:32
在remote中,像这样启动java来支持jmxremote。
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=9191 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=`hostname` \
-jar app.jar在地区中,像这样使用jps jps YOUHOSTNAME:9191。
发布于 2022-02-08 03:07:16
只适合那些需要快速工作方法的人。JMX可以动态启动/停止,这不需要重新启动JVM。在我的例子中,在动态启动jmx并重新启动jvisualvm之后,JMX和cpu的使用可以正常工作。
jcmd PID ManagementAgent.start jmxremote.port=9999 jmxremote.ssl=false jmxremote.authenticate=false或
jcmd PID ManagementAgent.stophttps://stackoverflow.com/questions/9319646
复制相似问题