用Java VisualVM 远程监控各种坑收集及解决(安装VisualGC,”不受此JVM支持“,无法创建jstatd连接)

本文介绍了使用Java VisualVM进行远程监控时遇到的问题,包括无法看到VisualGC插件、‘不受此JVM支持’错误以及无法创建jstatd连接。解决办法涉及修改VisualVM插件中心URL、配置jstatd服务以及处理防火墙限制,确保所需端口开放。

1.安装VisualGC(无法看到插件)

历史问题(sun公司被oracle收购后,域名变更),需要修改【工具】->【插件】->【设置】的Java VisualVM插件中心的URL地址。现在是:https://visualvm.github.io/uc/8u131/updates.xml.gz ,这个需要根据自己机器的jdk版本选择对应的地址。


2.不受此JVM支持

要监控的主机没有配置jstatd,参考:http://blog.youkuaiyun.com/liupeifeng3514/article/details/78998161


3.无法创建jstatd连接

在客户端(监控机器)上运行Java VisualVM。

1)选择【远程】,添加远程主机,并配置jstatd

2)填写对应的端口:与远程主机配置的一致(主机是3333,就配置3333)

3)添加完成(纳尼,怎么没有完成,发生了什么????查看日志?日志什么都没有)

不用着急,一般我们的服务器是开启防火墙的,防火墙,防火墙 重要的事说三遍。


我们只需要在远程主机上把VisualGC监控需要的端口打开即可。

centos7参考:

第一步:用命令: netstat -ntlp 找到 jstatd 需要的端口。


第二步:把这两个端口打开即可(注意要更新防火墙规则):


3333端口同上,不做截图。

好的,再去执行配置创建jstatd的3个步骤,完工。




Java中,VisualVM是一个强大的Java性能分析工具,而JStatD是一种服务,它允许从远程位置收集Java运行时监控数据。如果你想通过代码模拟VisualVM通过jstatd获取GC(垃圾回收)信息,你可以按照以下步骤操作: 1. **启动JStatD服务**: 首先,你需要在目标Java应用上配置jstatd服务。在`bin`目录下创建一个`jstatd.properties`文件,设置监听地址和端口,例如: ``` listen=0.0.0.0:8000 ``` 然后,用命令行启动jstatd进程: ``` jstatd -J-Xrunjdwp:transport=dt_socket,address=<your-port>,server=y,suspend=n -config <path-to-jstatd.properties> ``` 2. **编写Java代码连接JStatD**: 使用`java.net.Socket`或第三方库如`com.sun.jmx.remote.client.JMXClient`连接jstatd服务器,发送请求获取GC信息。例如,你可以使用`ManagementFactory.getPlatformMBeanServer().queryNames()`获取所有MBeans名称,然后针对`DiagnosticMXBean`发送特定的命令,如获取最近一次的GC详情。 ```java import com.sun.management.GarbageCollectorMXBean; import javax.management.MalformedObjectNameException; import javax.management.ObjectName; public class JStatDClient { public static void main(String[] args) { try { ObjectName objName = new ObjectName("java.lang:type=GarbageCollector"); GarbageCollectorMXBean gcBean = (GarbageCollectorMXBean) ManagementFactory.newPlatformMXBeanProxy( ManagementFactory.getPlatformMBeanServer(), objName, GarbageCollectorMXBean.class); // 获取最近一次的全GC long lastGcTime = gcBean.getLastGcInfo().getDuration(); System.out.println("Last Full GC time: " + lastGcTime); } catch (MalformedObjectNameException e) { e.printStackTrace(); } } } ``` 注意这需要Java 6及以上的版本,并且运行环境需开启安全管理器允许远程访问。
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值