`
y806839048
  • 浏览: 1107427 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

使用VisualVM监控远程服务器JVM

    博客分类:
  • jvm
jvm 
阅读更多

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
 
 print?
  1. #!/bin/shexport 
  2. 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
 
 print?
  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.password

cp $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
 
 print?
  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
(注意:这个随机端口重启visualvm后会变化)

3.4 测试

启动VisualVM,因为在配置JMX时已经添加过服务器节点,如果配置正确,通常VisualVM会自动检测到jstatd连接并添加节点
如果没有自动添加,可以检查端口是否能连通并尝试手动添加连接
VisualGC界面
(完)
 
参考:
http://ju.outofmemory.cn/entry/88242(包括自定义的插件按装)
分享到:
评论

相关推荐

    jvm监控工具visualVM

    可以看到本地及远程服务器上的Java进程,并进行连接。你可以选择要监控的应用,获取其JVM配置信息,包括JVM参数、类路径、模块系统等。 3. **性能监视** - **内存监控**:实时显示堆内存、非堆内存、eden区、...

    jvisualvm操作手册for linux菜鸟

    在使用VisualVM远程监控JVM之前,需要准备好测试环境。我们需要在服务器上配置jstatd守护程序,并在客户端使用VisualVM连接服务器监控Java程序。 ### 2.2 在服务器上配置 jstatd 的 security policy 文件 在服务器...

    JVM性能监控方法之visualVM1

    #### 五、使用VisualVM监控远程主机 完成上述配置后,在本地计算机上启动VisualVM工具,选择“添加远程主机”选项,输入远程服务器的IP地址和之前设置的端口号,即可成功连接远程服务器并监控其上的Java应用程序。 ...

    可视化性能监控工具VisualVM

    2. **连接远程JVM**:如果需要监控远程Java应用,需要在目标机器上配置JDK的`jvm.options`文件,开启远程监控端口,然后在VisualVM中添加远程主机。 3. **选择分析模块**:根据需求选择合适的分析模块,例如选择...

    visualvm143.zip

    2. **远程监控**:VisualVM支持远程连接,通过JMX或RMI,可以对远程服务器上的Java应用进行监控。 3. **离线分析**:可以导出应用程序的快照,以便在离线环境下进行深度分析。 4. **插件安装**:从VisualVM官网下载...

    VisualVM使用方法

    它不仅可以监控本地运行的Java应用程序,还可以配置后监控远程服务器上的Java应用。 首先,VisualVM可以提供详细的JVM信息,包括运行时内存使用状况、CPU使用率、类加载和卸载信息以及线程状态。利用这些信息,...

    VisualVM入门指南 使用说明 新手上路

    - **远程监控**:不仅能够监控本地应用,还能连接并监控远程服务器上的Java应用。 - **适用范围**: - 支持从JDK 1.4以上的Java应用程序。 - 在JDK 6 Update 7及以上版本中,VisualVM已经默认集成在JDK安装包中...

    visualvm中文版

    作为一款JVM监控工具,VisualVM可以帮助开发者监控Java应用程序的性能指标,如CPU使用率、内存占用、线程状态等。通过对这些数据的分析,开发者可以找出程序的瓶颈,进行性能优化,提高应用的运行效率。 VisualVM的...

    VisualVM入门

    VisualVM不仅可以监控本地运行的应用程序,还能通过Java管理扩展(JMX)技术监控远程运行的应用程序。VisualVM不仅适用于开发者,也适用于系统管理员和Java应用的最终用户,它极大地简化了性能调优和问题诊断的过程...

    最新版 visualvm_21.zip

    通过JMX(Java Management Extensions),VisualVM可以连接到远程服务器,监控和管理运行的应用。这使得开发者可以在不中断服务的情况下进行性能调试。 6. **插件系统** VisualVM的一大特色是其丰富的插件系统。...

    visualvm 中文版

    VisualVM可以连接到MBeans服务器,查看和操作MBeans,从而远程管理Java应用程序,执行配置更改或获取运行时信息。 5. **CPU和内存分析**: VisualVM可以深入到CPU使用率的详细级别,展示每个线程的执行情况,帮助...

    监控jvm资源利用,查看应用程序的资源占用情况

    6. **远程监控**:除了本地JVM,VisualVM还可以连接到远程服务器上的JVM,这使得在分布式环境中远程诊断成为可能。 7. **插件扩展**:VisualVM支持丰富的插件,例如NetBeans Profiler(用于更深入的性能分析)、JMX...

    JVM调优工具分享

    对于远程监控,需在Tomcat等应用服务器的启动脚本中添加相应的JMX远程访问配置。JConsole的界面包含概述、内存、线程、类、VM和MBeans六个主要部分,它们分别显示堆内存使用、线程状态、已加载类、虚拟机信息以及...

    JAVA JVM内存监控工具总结

    它还支持远程连接,使得监控远程服务器上的JVM变得轻松。 了解并熟练使用这些工具,开发者可以更有效地诊断和优化Java应用的内存性能,防止常见的内存问题,如内存泄漏、垃圾收集效率低下等。通过实时监控和定期...

    visualvm_132-ml

    通过JMX(Java Management Extensions)接口,VisualVM可以远程监控和管理Java应用程序,获取更多自定义的性能指标,实现更全面的监控。 7. **插件扩展**: VisualVM支持丰富的插件,用户可以根据需求安装不同的...

    VisualVM.zip

    5. **JMX集成**:VisualVM可以通过JMX(Java Management Extensions)连接到远程服务器上的应用程序,进行远程监控和管理。 6. **类和方法信息**:它显示关于加载的类和方法的详细信息,包括类的数量、大小以及它们...

    JMX-how-to-use.rar_jmx_服务器_远程监控 文件

    本文档“JMX如何使用”深入探讨了如何利用JMX在Java Web环境中进行远程服务器管理与监控。 1. **JMX简介** JMX允许开发者创建和注册管理 Bean(MBeans),这些Bean提供了对应用程序组件的访问接口,从而可以监控和...

Global site tag (gtag.js) - Google Analytics