共计 3322 个字符,预计需要花费 9 分钟才能阅读完成。
VisualVM 是 JDK 自带的一款全能型性能监控和故障分析工具,包括对 CPU 使用、JVM 堆内存消耗、线程、类加载的实时监控,内存 dump 文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很有帮助。在 Windows 中安装 JDK 后,VisualVM 位于 %JAVA_HOME%/bin/ 下,直接执行 jvisualvm.exe 即可,一个主要运行界面如图:
VisualVM 会自动检测本机运行中的 JVM 并建立连接,本文主要介绍连接远程 Linux 服务器的配置方法,测试环境为 CentOS 6.5,JDK8,Tomcat8。
VisualVM 连接远程服务器有两种方式:JMX 和 jstatd,两种方式都不能完美支持所有功能,例如 JMX 不支持 VisualGC,jstatd 不支持 CPU 监控,实际使用可同时配置上并按需选用。
1 配置前的准备
我们需要先检查 linux 的 hostname 匹配的 IP,执行
hostname -i
如果匹配的结果是无法识别或者 127.0.0.1, 则需要手动配置主机名和 IP 映射。假设要用于建立连接的 IP 是 192.168.11.233,主机名是 mylinux:
vi /etc/hosts
添加一行
192.168.11.233 mylinux
2 配置 JMX
2.1 创建 setenv.sh
进入 tomcat/bin 目录
vi setenv.sh
- #!/bin/shexport JAVA_OPTS=“$JAVA_OPTS -Xms512m -Xmx512m -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access”
(-Xms512m -Xmx512m 不是必须的参数,放在这里只是示意可以连同 JVM 参数一起调整)
设置权限
chmod +x setenv.sh
2.2 在 server.xml 中添加 listener
进入 tomcat/conf 目录
vi server.xml
- <Listener className=“org.apache.catalina.mbeans.JmxRemoteLifecycleListener” rmiRegistryPortPlatform=“10001” rmiServerPortPlatform=“10002” />
端口可根据实际情况修改,添加后的结构如下图
2.3 JMX 访问控制文件
进入 tomcat/conf 目录,执行
cp $JAVA_HOME/jre/lib/management/jmxremote.password.template jmxremote.passwordcp $JAVA_HOME/jre/lib/management/jmxremote.access jmxremote.access
然后
vi jmxremote.password
取消以下两行注释
#monitorRole QED
#controlRole R&D
也可以自定义账号,按 username password 的格式添加一行,这样就需要同时修改 jmxremote.access
vi jxmremote.access
在最下面添加
username readwrite
修改权限
chmod 600 jmxremote.password
chmod 600 jxmremote.access
2.4 添加 catalina-jmx-remote.jar
下载地址 http://mvnrepository.com/artifact/org.apache.tomcat/tomcat-catalina-jmx-remote
下载后复制到 tomcat/lib 目录
至此,配置工作完成,但是还需要把 2.2 中的两个端口加入到防火墙允许规则中
2.5 设置防火墙
vi /etc/sysconfig/iptables
在 -A INPUT -j REJECT –reject-with icmp-host-prohibited 前加入
- -A INPUT -p tcp -m state –state NEW -m tcp –dport 10001 -j ACCEPT
- -A INPUT -p tcp -m state –state NEW -m tcp –dport 10002 -j ACCEPT
service iptables restart
在客户机上 telnet 服务器的 10001 和 10002 端口,如果都通就正确了。
2.6 测试
在客户机上启动 jvisualvm.exe,在左侧树形菜单的远程上右键 -> 添加远程主机,主机名填写服务器 IP
确定后,远程下出现新的子节点,在子节点上右键 -> 添加 JMX 连接
连接输入 IP:10001,注意这个端口是 2.2 步骤中配置的 rmiRegistryPort。勾选使用安全凭证,用户名和口令即 2.3 步骤中 jmxremote.password 文件内的用户名和对应密码。勾选保存安全凭证
本文的配置中未启用 SSL,点确定后会提示“请确认不用 SSL 方式尝试连接”,选择“是”。如果一切顺利在服务器节点下出现 JMX 连接子节点,双击后即可打开功能界面。
尝试一下强大的 Visual GC 插件,很遗憾,提示 ” 不受此 JVM 支持“,如果想使用这个插件,就需要配置 jstatd 连接方式,下面来看 jstatd 的配置。
3 配置 jstatd
3.1 配置安全策略
在文件末位的 }; 前添加
permission java.security.AllPermission;
3.2 启动 jstatd
./jstatd -J-Djava.security.policy=all.policy &
3.3 设置防火墙
3.4 测试
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-01/139409.htm