阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用VisualVM远程监控JVM Linux服务器配置方法

139次阅读
没有评论

共计 3322 个字符,预计需要花费 9 分钟才能阅读完成。

VisualVM 是 JDK 自带的一款全能型性能监控和故障分析工具,包括对 CPU 使用、JVM 堆内存消耗、线程、类加载的实时监控,内存 dump 文件分析,垃圾回收运行情况的可视化分析等,对故障排查和性能调优很有帮助。在 Windows 中安装 JDK 后,VisualVM 位于 %JAVA_HOME%/bin/ 下,直接执行 jvisualvm.exe 即可,一个主要运行界面如图:

使用 VisualVM 远程监控 JVM Linux 服务器配置方法

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

  1. #!/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

  1. <Listener className=“org.apache.catalina.mbeans.JmxRemoteLifecycleListener” rmiRegistryPortPlatform=“10001” rmiServerPortPlatform=“10002” /> 

端口可根据实际情况修改,添加后的结构如下图

使用 VisualVM 远程监控 JVM Linux 服务器配置方法

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 前加入

  1. -A INPUT -p tcp -m state –state NEW -m tcp –dport 10001 -j ACCEPT   
  2. -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

使用 VisualVM 远程监控 JVM Linux 服务器配置方法

确定后,远程下出现新的子节点,在子节点上右键 -> 添加 JMX 连接

连接输入 IP:10001,注意这个端口是 2.2 步骤中配置的 rmiRegistryPort。勾选使用安全凭证,用户名和口令即 2.3 步骤中 jmxremote.password 文件内的用户名和对应密码。勾选保存安全凭证

使用 VisualVM 远程监控 JVM Linux 服务器配置方法

本文的配置中未启用 SSL,点确定后会提示“请确认不用 SSL 方式尝试连接”,选择“是”。如果一切顺利在服务器节点下出现 JMX 连接子节点,双击后即可打开功能界面。

使用 VisualVM 远程监控 JVM Linux 服务器配置方法

尝试一下强大的 Visual GC 插件,很遗憾,提示 ” 不受此 JVM 支持“,如果想使用这个插件,就需要配置 jstatd 连接方式,下面来看 jstatd 的配置。

3 配置 jstatd

3.1 配置安全策略

vi $JAVA_HOME/jre/lib/security/java.policy
在文件末位的 }; 前添加
permission java.security.AllPermission;
使用 VisualVM 远程监控 JVM Linux 服务器配置方法

3.2 启动 jstatd

cd $JAVA_HOME/bin
./jstatd -J-Djava.security.policy=all.policy &
启动后会开启注册端口 1099 和一个随机的连接端口,注册端口也可通过 - p 参数指定,如./jstatd -J-Djava.security.policy=all.policy -p 10003 &

3.3 设置防火墙

除了把 1099 添加到防火墙规则外,还需要找到另外一个随机端口,也加入到规则中
执行
netstat -anp | grep *jstatd
使用 VisualVM 远程监控 JVM Linux 服务器配置方法
可以看到除了 1099,jstatd 还监听了 53040 端口,把这个也加入到规则中,添加方法参照 2.5
(注意:这个随机端口重启后会变化)

3.4 测试

启动 VisualVM,因为在配置 JMX 时已经添加过服务器节点,如果配置正确,通常 VisualVM 会自动检测到 jstatd 连接并添加节点
使用 VisualVM 远程监控 JVM Linux 服务器配置方法
如果没有自动添加,可以检查端口是否能连通并尝试手动添加连接
VisualGC 界面
使用 VisualVM 远程监控 JVM Linux 服务器配置方法
(完)

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-01/139409.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3322字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中