使用jvisualVM和jstatd监控远程java进程

本文详细指导如何在远程服务器上设置jstatd.all.policy策略文件,以允许Java监控,并演示如何通过jvisualVM连接到配置后的JVM,适用于Java进程管理与调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,在远程需要监控的java进程的服务器上,找到java目录下的bin,在bin下建立一个文件:

jstatd.all.policy ,内容如下:

grant codebase "file:${java.home}/../lib/tools.jar" {
    permission java.security.AllPermission;
};

然后在远程服务器的java/bin目录下执行:

./jstatd -J-Djava.security.policy=jstatd.all.policy

jstatd.all.policy即刚才建立的策略文件。

在本地打开jvisualVM,连接远程JVM

Java中,如果需要从本地代码远程连接到其他服务器的JSTAD并获取监控信息,可以使用Java Remote Method Invocation (RMI) Java Management Extensions (JMX) 技术结合实现。下面是基本步骤: 1. **设置JMX远程访问**:在目标服务器上,需要开启JMX远程访问,通常在启动JVM时添加 `-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false` 这样的命令行参数。 2. **启动JSTAD**:确保JSTAD服务已在目标服务器上运行,它会监听特定的端口(默认是1099),接收来自RMI客户端的请求。 3. **创建RMIClient**:在你的Java代码中,使用`ManagementFactory.getPlatformMBeanServer()`获取本地的MBeanServer,然后创建一个`JMXConnector`实例,它允许你连接到远程的服务器: ```java MBeanServerConnection connection = null; try { JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://<target_host>:<port>/jmxrmi"); connection = JMX.connect(url); } catch (MalformedURLException e) { // handle exception } ``` 替换 `<target_host>` `<port>` 为实际的目标主机名端口号。 4. **查询MBeans**:现在你可以通过`connection`发送请求,例如查询JVM内存状态或线程信息: ```java ObjectName name = new ObjectName("java.lang:type=Memory"); MemoryMXBean memoryBean = ManagementFactory.newPlatformMXBeanProxy(connection, name, MemoryMXBean.class); MemoryUsage heapUsage = memoryBean.getHeapMemoryUsage(); ``` 5. **处理返回结果**:最后,处理从远程服务器获取的监控信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大柳树伯爵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值