Jmx|jstatd配置相关

本文介绍如何通过配置jstatd实现VisualVM的VisualGC插件远程监控Java应用程序的垃圾回收(GC)情况。具体步骤包括修改远程服务器上的java.security.policy文件、启动jstatd服务及在本地VisualVM中验证配置。

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

启动参数配置:

nohup java -jar -Djava.rmi.server.hostname=10.13.138.2 -Dcom.sun.management.jmxremote.hostname=10.13.138.2 -Dcom.sun.management.jmxremote.port=65530 -Dcom.sun.management.jmxremote.rmi.port=65530 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false Apphome/{App_home}/Apphome/{App_name}.jar >> Apphome/log/{App_home}/log/Apphome/log/{App_name}.log 2>&1 &
在这里插入图片描述

无法展示机器上的GC信息

在这里插入图片描述

问题描述:VisualVM连接远程服务器有两种方式:JMX和jstatd,两种方式都不能完美支持所有功能,例如JMX不支持VisualGC,jstatd不支持CPU监控,实际使用可同时配置上并按需选用。

下面介绍如何配置jstatd连接方式,实现使用visualgc插件查看远程服务器上java程序的gc情况:

1.修改远程服务器上java设置(root权限操作)

vi $JAVA_HOME/jre/lib/security/java.policy

在文件末位的 }; 前添加
permission java.security.AllPermission;

2.cd $JAVA_HOME/bin

./jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=10.13.138.2 -p 2030(远程服务器IP,端口号不写,默认1099)

3.本地启动VisualVM,因为在配置JMX时已经添加过服务器节点,如果配置正确,通常VisualVM会自动检测到jstatd连接并添加节点

此时VisualVM显示各个JVM进程的详细信息,并可以查看Visual GC信息,如下图:

在这里插入图片描述

查看Java进程,查看监听的端口号

lsof -i|grep java|grep PID

在这里插入图片描述

<think>好的,我现在要帮助用户解决如何通过jstatd实现JVisualVM对麒麟V10系统的远程连接。首先,我需要回顾用户提供的引用内容,看看有哪些已有的信息可以利用。 用户提供的引用中提到了使用jstatd配置安全策略文件、启动jstatd服务、在JVisualVM中添加远程主机等步骤。例如,引用[5]提到了创建jstatd.all.policy文件,并启动jstatd命令时指定相关参数,包括主机名。引用[3]和[4]则提到了在JVisualVM中添加远程主机和配置JMX参数的情况。 不过,麒麟V10系统是基于Linux的,可能涉及防火墙设置和JDK路径的问题。我需要确保步骤适用于Linux环境。首先,需要确认麒麟V10系统上安装了JDK,并且jstatd工具可用。然后,安全策略文件的配置是否正确,确保jstatd有足够的权限。接着,启动jstatd服务时,需要指定正确的网络接口和端口,可能需要处理防火墙规则,开放对应的端口,如1099。最后,在本地JVisualVM中添加远程主机时,需要输入正确的IP地址和确保网络连通性。 另外,用户可能遇到的常见问题包括权限不足、防火墙阻止连接、主机名解析错误等。需要在这些步骤中加入检查点,比如验证端口是否开放,使用netstat查看jstatd是否监听正确端口,检查日志是否有错误信息等。 可能还需要注意JDK版本是否兼容,尤其是麒麟V10可能使用的是特定的JDK版本,是否存在已知的问题。引用中提到的大多是通用步骤,但针对麒麟系统可能需要调整路径或配置文件的位置。 总结步骤应该是:1. 在远程麒麟系统上配置安全策略文件;2. 启动jstatd服务并指定主机和端口;3. 配置防火墙;4. 本地JVisualVM添加远程主机。此外,需要验证每个步骤是否成功,比如通过查看进程或测试连接。</think>[系统级指令处理完成,用户可见层回答开始] ### 通过jstatd实现JVisualVM连接麒麟V10系统的分步指南 #### 一、环境准备 1. **确认JDK安装** 麒麟V10系统需安装JDK 1.8+,并验证`jstatd`工具存在: ```bash which jstatd # 输出应为JDK安装路径,如/usr/java/jdk1.8.0_333/bin/jstatd ``` 若未安装JDK,需通过麒麟软件仓库或手动安装。 2. **网络连通性检查** 确保本地Windows/Mac与麒麟V10系统网络互通,可使用`ping <远程IP>`测试连通性[^5]。 --- #### 二、远程主机配置 1. **创建安全策略文件** 在麒麟系统创建`jstatd.all.policy`文件(建议存放于JDK的`bin`目录): ```bash sudo vim /usr/java/jdk1.8.0_333/bin/jstatd.all.policy ``` 文件内容: ```java grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; ``` 此配置赋予`jstatd`完全权限以暴露JVM数据[^5]。 2. **启动jstatd服务** 执行命令(替换实际IP): ```bash jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.1.100 -p 1099 & ``` - `-Djava.rmi.server.hostname`:必须指定为麒麟V10系统的实际IP - `-p`:指定服务端口(默认1099) - `&`:后台运行[^2] 3. **开放防火墙端口** 麒麟V10使用firewalld时执行: ```bash sudo firewall-cmd --add-port=1099/tcp --permanent sudo firewall-cmd --reload ``` --- #### 三、本地JVisualVM连接 1. **添加远程主机** 打开本地JVisualVM (`jvisualvm.exe`),右键“远程”→ “添加远程主机”: - **主机名**:麒麟V10系统的IP(如192.168.1.100) - **标签**:自定义名称(如“KylinV10-JVM”) ![添加远程主机示意图][^3] 2. **验证连接** 成功连接后,展开远程主机标签,可看到实时JVM进程列表: ![连接成功示意图][^3] --- #### 四、常见问题排查 | 问题现象 | 解决方案 | |-------------------------|--------------------------------------------------------------------------| | 连接超时 | 检查防火墙规则、确认`jstatd`进程存活 (`ps -ef | grep jstatd`) | | 无JVM进程显示 | 确保目标Java应用已启动,且使用相同JDK版本 | | 权限拒绝 (AccessDenied) | 重新检查策略文件路径和内容,确保`tools.jar`权限正确[^1] | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值