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

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

  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" />

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

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

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

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

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

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

3 配置jstatd

3.1 配置安全策略

vi $JAVA_HOME/jre/lib/security/java.policy
在文件末位的 }; 前添加
permission java.security.AllPermission;

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

可以看到除了1099,jstatd还监听了53040端口,把这个也加入到规则中,添加方法参照2.5

(注意:这个随机端口重启后会变化)

3.4 测试

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

如果没有自动添加,可以检查端口是否能连通并尝试手动添加连接

VisualGC界面

(完)

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

时间: 2024-08-28 07:40:25

使用VisualVM远程监控JVM Linux服务器配置方法的相关文章

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

1 tomcat 配置 修改catalina.sh,添加如下代码: CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.111.171 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8088 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote

visualVM远程监控JVM

对于完全没用使用过visualVM的初学者 环境:Windows PC上使用visualVM监控远端JVM @@@@jstatd方式连接@@@@ 1.Windows安装jdk,$JAVA_HOME/bin/jvisualvm.exe,jdk自带图形化监控工具,双击运行 2.linux安装jdk, $JAVA_HOME/bin 下创建一个新文件  jstatd.all.policy,编辑该文件,填入内容,配置环境变量,若没有配置,file后面添加tool.jar的绝对路径 grant codeba

visualvm远程监控jvm两种配置方法

参考:http://blog.itpub.net/17203031/viewspace-765810 一.Jstatd RMI远程监控方法 VisualVM在监控本地JVM的时候是很方便的.只要应用程序运行起来,我们就可以从VisualVM里面监控出来. 远程服务器上的JVM监控就需要一些额外的配置了.目前VisualVM支持两种监控方法:Jstatd方法和基于JMX的方法.我们先介绍Jstatd方法. Jstatd方法是利用后台的RMI守护进程来实现对远程JVM的监控. 1.查看一下JAVA_

Java VisualVM远程监控JVM

VisualVM是一个以监控.显示本地或者远程服务器JVM工作情况,进行性能调优的工具.借助VisualVM,我们可以实现对JVM内存各个子池.CPU.垃圾收集器等方面进行监控,从而发现程序代码中潜在的泄露点和配置问题. 远程监控Linux JVM有两种连接方式: CentOS6.5安装:yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel Ubuntu12.04安装:sudo apt-get install java-7-openjdk

Java 进阶(二) 使用visualVM远程监控JVM

1.配置Java安全访问 新建文件jstatd.all.policy 内容: grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; }; 2.在远程服务器上执行 jstatd -J-Djava.security.policy=jstatd.all.policy 3.打开visualVM,Remote上添加远程服务器ip

使用visualvm远程监控LINUX服务器JVM

使用visualvm远程监控LINUX服务器JVM 一.JMX方式: 1. 首先要修改JDK中JMX服务的配置文件,以获得相应的权限: 进入$JAVA_HOME所在的根目录的/jre/lib/management子目录下, a. 将jmxremote.password.template文件复制为jmxremote.password b. 调整jmxremote.access和jmxremote.password的权限为只读写,可以使用如下命令 chmod 600 jmxremote.access

VisualVM 远程监控

VisualVM 远程监控        1. 通过jstatd启动RMI服务        配置java安全访问,将如下的代码存为文件 jstatd.all.policy,放到JAVA_HOME/bin中,其内容如下,        grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };                      执行命令jstat

JMX远程监控JVM

远程监控JVM状态需要在JVM启动的时候需要加上一段代码开启这个功能.(以下全部以ubuntu-14-04-server.jdk1.8.tomcat7.0环境为基础) 配置的时候分两种情况:1.无需配置用户访问权限:2.需要配置用户访问权限 先看第一种:首先更改tomcat启动参数(vim catalina.sh)找到 # OS specific support. $var _must_ be set to either true or false. 添加如下变量:JAVA_OPTS="-Dco

在resin配置参数实现JConsole远程监控JVM

在Resin配置参数实现JConsole远程监控JVM 在Resin中配置中配置下列参数,就可以是实现了! <jvm-arg>-Dcom.sun.management.jmxremote</jvm-arg> <jvm-arg>-Dcom.sun.management.jmxremote.port=9999</jvm-arg> <jvm-arg>-Dcom.sun.management.jmxremote.ssl=false</jvm-arg