我正在尝试通过 jstatd 监视服务器上运行的所有 Java 进程。我已经把它设置好了,我可以连接到 VisualVM 并查看所有正在运行的进程。大多数显示工作正常,但某些内容(尤其是 CPU 使用率和 MBean)不显示。相反,它说:
MBean 浏览器
数据不可用,因为无法建立与 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 查看时,如何让我的 MBean 和 CPU 使用率显示在 VisualVM 中?