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
[java] view plain copy
#!/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
[java] view plain copy
<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前加入
[java] view plain copy
-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 配置安全策略
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界面
分享到:
相关推荐
- **配置远程JVM**:远程JVM需要开启JMX服务,并设置必要的安全策略。在JVM启动参数中添加`-Dcom.sun.management.jmxremote`等相关选项。 - **连接远程JVM**:在VisualVM的"Remote"选项卡中,输入远程主机的IP地址...
jmx 方法直接远程连接 Tomcat,而 jstatd 方法需添加创建 `jstatd.all.policy` 文件,并执行命令 `jstatd -J-Djava.security.policy=jstatd.all.policy`,然后远程连接。jstatd 服务一直运行,通过 `jps` 命令可查询...
6. **远程连接**:VisualVM支持远程连接到运行中的Java应用,使得不在本地的性能分析和故障排查成为可能。 7. **采样分析**:通过采样方法,收集应用程序运行时的数据,以统计方式分析程序行为。 8. **插件扩展**...
VisualVM可以连接到MBeans服务器,查看和操作MBeans,从而远程管理Java应用程序,执行配置更改或获取运行时信息。 5. **CPU和内存分析**: VisualVM可以深入到CPU使用率的详细级别,展示每个线程的执行情况,帮助...
在服务器上需要配置jstatd守护程序的security policy文件,以便VisualVM可以远程连接。security policy文件的内容可以如下所示: ``` grant codebase "file:${java.home}/../lib/tools.jar" { permission java....
描述中提到,VisualVM可以进行远程调试程序,这意味着开发者可以远程连接到运行Java应用的服务器,实时查看和分析其运行情况,而无需实际坐在服务器旁边。同时,通过IDEA(IntelliJ IDEA)的"visualvm-launcher"插件...
2. **远程监控**:VisualVM支持远程连接,通过JMX或RMI,可以对远程服务器上的Java应用进行监控。 3. **离线分析**:可以导出应用程序的快照,以便在离线环境下进行深度分析。 4. **插件安装**:从VisualVM官网下载...
通过JMX(Java Management Extensions),VisualVM可以连接到远程服务器,监控和管理运行的应用。这使得开发者可以在不中断服务的情况下进行性能调试。 6. **插件系统** VisualVM的一大特色是其丰富的插件系统。...
5. **远程连接**:除了本地应用,VisualVM还可以连接到远程的JVM,实现对分布式系统中各个节点的监控。 6. **采样和剖析**:采样模式能快速查看整体性能,而剖析模式则可以深入到代码级别,查看每个方法的执行时间...
VisualVM不仅能够监控本地JVM,还可以通过JMX(Java Management Extensions)协议连接远程服务器上的JVM。要设置远程监控,需确保远程JVM启用JMX,并配置了正确的端口和访问权限。在VisualVM中,可以通过“文件”->...
开发者可以通过JMX连接到应用,获取运行时信息,甚至修改应用程序的配置。 六、插件扩展性 VisualVM的一大亮点是其强大的插件系统。用户可以根据需求安装各种插件,扩展其功能,如支持其他语言的应用监控,或者提供...
除了本地应用外,VisualVM还可以连接到远程主机上的Java应用进行监控。要实现这一点,需要先确保远程主机上安装了JMX代理服务,并允许远程访问。配置完成后,在VisualVM的导航栏中选择“Remote”,然后输入远程主机...
3. **配置与设置**:在首选项中可以配置连接参数、显示选项等,以适应个人工作习惯。 4. **连接本地或远程应用**:通过"File"菜单选择"Open Local Process"或"Connect to Remote Host",输入必要的连接信息。 5. *...
对于远程连接,VisualVM支持JMX远程监控,只需在JVM启动时添加适当的JVM参数即可。此外,VisualVM还支持插件扩展,可以通过安装各种社区开发的插件来增强其功能,比如对特定框架或库的性能分析支持。 在优化Java...
可以看到本地及远程服务器上的Java进程,并进行连接。你可以选择要监控的应用,获取其JVM配置信息,包括JVM参数、类路径、模块系统等。 3. **性能监视** - **内存监控**:实时显示堆内存、非堆内存、eden区、...
在使用VisualVM时,首先需要下载并安装这个工具,然后连接到本地或远程的Java进程。通过简洁明了的用户界面,开发者可以轻松地切换不同视图,获取所需的信息。对于复杂的性能问题,VisualVM的深度剖析功能可以提供...
在远程监控方面,VisualVM 支持两种连接方式:jstatd 和 JMX(Java Management Extensions)。本文将详细介绍如何通过 JMX 方式配置并监控远程的 JVM 进程。 首先,要通过 JMX 方式监控远程 JVM,需要在远程主机上...
- **JMX监控**:通过Java Management Extensions (JMX) 支持,VisualVM可以连接到远程或本地的Java应用,实时监控各种性能指标。 - **CPU使用率分析**:显示每个线程的CPU使用情况,帮助找出性能瓶颈。 - **内存...
7. **远程连接**:VisualVM不仅支持本地应用的监控,还可以连接到远程的Java应用实例,实现远程性能分析。 针对Mac OS用户,"VisualVM_144.dmg"文件是一个适用于该操作系统的安装镜像,用户可以通过双击安装,将...
2. **连接远程JVM**:如果需要监控远程Java应用,需要在目标机器上配置JDK的`jvm.options`文件,开启远程监控端口,然后在VisualVM中添加远程主机。 3. **选择分析模块**:根据需求选择合适的分析模块,例如选择...