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

本文介绍如何在远程服务器上监控Java进程。首先,在服务器的java主目录bin目录下创建策略文件jstatd.all.policy,授予tools.jar全部权限。然后执行jstatd命令,指定策略文件路径。在本地使用jvisualVM客户端添加远程主机,填写IP地址,即可监控远程Java进程。若远程主机无法显示Java进程,禁用ipv6可能解决问题。

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

首先在需要监控java进程的远程服务器上的java主目录的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客户端,在远程节点下添加一个远程主机,填写IP地址即可,端口号为缺省的1099,添加后,远程主机下即可显示远程主机的java进程,点击一个java进程,即可监控进程情况。

 

发现如果远程主机下不能显示java进程,在远程主机禁用ipv6,可以解决,不清楚原因。

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、付费专栏及课程。

余额充值