我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.
这个工具就在JAVA_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面
从左边Applications树中可以知道,不光可以监控本地JVM运行情况, 还可以监控远程机器上的JVM运行情况.
本地监控:只要打开某个JAVA程序就会自动的加入到本地监控中.
因为本地监控无需配置, 所以这里主要介绍监控远程JVM
要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, Visualvm目前支持两种remote connection方式.
分别是jstatd和JMX方式: 这里我主要介绍的是通过JMX方式.
通过JMX连接远程机器, 需要经过下面的配置:
1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
a.进入JAVA_HOME\jre\lib\management\目录
b.拷贝jmxremote.password.template这个文件到当前目录, 并改名为jmxremote.password
c.打开jmxremote.password文件,去掉 # monitorRole QED 和 # controlRole R&D 这两行前面的注释符号
2. 修改远程机器上需要被监控的程序的配置文件 (我这里是监控Tomcat容器内部署的应用).
a.进入TOMCAT_HOME\bin目录
b.打开catalina.sh文件,加入如下信息:
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.0.237
-Dcom.sun.management.jmxremote.port=18999
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false"
c.重启Tomcat服务.
3. 客户端VisualVM配置 (我客户端用的是WinXP).
a.直接反键点击Remote,选择Add Remote Host...
b.在弹出的界面中输入远程机器的IP地址(192.168.0.237),这个IP地址会加入到Remote节点下.
c.反键点击这个IP地址,选择Add JMX Connection, 在弹出的界面中输入刚配置的端口号(18999), 这个连接会加入到该IP节点下.
d.反键点击这个连接,选择Open.
此时就可以看到监控的界面, 从界面上我们可以看到CPU信息, 内存信息, 统计加载类数量,线程信息
转自:http://blog.163.com/liuyb_94242/blog/static/42167646201210131156174/
远程监控:启动RMI服务
1:新建一个jstatd.all.policy文件,在里面添加以下内容来保证jstatd服务启动的时候不报异常:
- grant codebase "file:${java.home}/../lib/tools.jar" {
- permission java.security.AllPermission;
- };
2:netstat -ano | grep -i 1099 查看1099端口是否被占用了,如果被占用,则需要选择其他端口来启动jstatd服务
3:如果端口被占用,用以下方式启动jstatd服务:
- rmiregistry 2020 & jstatd -J-Djava.security.policy=jstatd.all.policy -p 2020
更多jstatd的文档请参考sun公司的官方文档 这里
远程监控Jboos服务
1:修改JDK下面的jmx的配置文件:
切换至$JAVA_HOME所在目录/jre/lib/management下,
I:将jmxremote.access、jmxremote.password.template权限调整为读写:
- grant codebase "file:${java.home}/../lib/tools.jar" {
- permission java.security.AllPermission;
- };
II:vi jmxremote.password去掉
# monitorRole QED
# controlRole R&D
的#号
2:在Jboss的启动文件中添加以下信息:
- JAVA_OPTS="-Dcom.sun.management.jmxremote.port=2899 \
- -Dcom.sun.management.jmxremote.ssl=false \
- -Dcom.sun.management.jmxremote.authenticate=false \
- -Djava.rmi.server.hostname=10.212.20.9 其他配置"
3:检查启动情况:
netstat -a | grep -i 2899 查看端口占有情况
如果2899端口被其他程序占用,在jboss配置文件中调整端口-Dcom.sun.management.jmxremote.port=****
而后在VisualVM中就添加远程连接,选择jmx方式,就可以监控jboss的运行情况了。
相关推荐
- **监控远程应用**:连接成功后,远程JVM的监控功能与本地应用相同,可以进行性能监控、内存分析等操作。 5. **使用插件扩展功能** VisualVM的插件中心提供许多扩展,如JProfiler、NetBeans Profiler等,可以...
Java VisualVM 是 JDK 1.6 及以上版本中自带的一款性能监控工具,它允许用户监控本地或远程的 Java 虚拟机(JVM)进程的运行状况。它提供了丰富的监控和分析功能,可用于对系统资源,尤其是内存的消耗进行分析。在...
在使用VisualVM远程监控JVM之前,需要准备好测试环境。我们需要在服务器上配置jstatd守护程序,并在客户端使用VisualVM连接服务器监控Java程序。 ### 2.2 在服务器上配置 jstatd 的 security policy 文件 在服务器...
6. **类和库信息**:你可以查看已加载的类、它们的大小和依赖关系,以及JVM使用的库。 7. **本地方法追踪**:对于混合编程(如Java与C/C++),VisualVM还可以追踪本地方法调用,这在排查跨语言问题时很有价值。 8....
VisualVM是一款强大的JVM(Java Virtual Machine)监控和性能分析工具,由Oracle公司开发并提供。它集成在Java SDK中,默认位于%JAVA_HOME%\bin目录下,方便开发者直接使用。这款工具提供了丰富的功能,帮助Java...
5. 确保"Use VisualVM for remote JVM debugging"选项被勾选,这样Idea会在远程调试时使用VisualVM。 6. 点击"OK"保存配置。 三、启动项目会自动弹出界面 1. 当你启动一个带有调试配置的Java项目时,如果配置了...
VisualVM 可以远程监控 JVM,需要在远程机器上启动 jstatd 守护进程, 并在本地机器上使用 VisualVM 连接到远程机器。 使用 VisualVM 可以: * 监控 JVM 的性能,包括堆内存、线程、类加载等信息 * 进行线程 dump ...
2. **JConsole**: JConsole是Java SDK自带的一个可视化监控工具,它可以连接到本地或远程的JVM,显示关于内存、线程、类加载、垃圾回收等关键信息。开发者可以使用JConsole来监控JSN数据。 3. **VisualVM**: 另一个...
作为一款JVM监控工具,VisualVM可以帮助开发者监控Java应用程序的性能指标,如CPU使用率、内存占用、线程状态等。通过对这些数据的分析,开发者可以找出程序的瓶颈,进行性能优化,提高应用的运行效率。 VisualVM的...
JVM(Java虚拟机)提供了多种监控工具来帮助开发者检测和解决这类问题。本篇将重点介绍几种常用的JVM监控工具,包括jstack、jconsole、jinfo、jmap以及jdb和jstat。 首先,`jstack`是一个用于打印Java线程堆栈跟踪...
VisualVM是一个功能强大的Java虚拟机(JVM)监控、分析和故障排查工具,它提供了广泛的监控和分析功能,可帮助开发人员诊断和解决Java应用程序的性能问题。 主要功能: 1.CPU监控:显示Java进程的CPU使用率、线程...
#### 五、使用VisualVM监控远程主机 完成上述配置后,在本地计算机上启动VisualVM工具,选择“添加远程主机”选项,输入远程服务器的IP地址和之前设置的端口号,即可成功连接远程服务器并监控其上的Java应用程序。 ...
- **远程监控**:不仅能够监控本地应用,还能连接并监控远程服务器上的Java应用。 - **适用范围**: - 支持从JDK 1.4以上的Java应用程序。 - 在JDK 6 Update 7及以上版本中,VisualVM已经默认集成在JDK安装包中...
通过合理利用 VisualVM 及其集成的命令行工具,开发者能够有效地监控和分析 JVM 的内存使用情况,及时发现并解决内存泄漏、GC 效率低下等问题。掌握这些工具的使用方法,对于任何 Java 开发者而言都是必备技能。
* 监控远程 Java 应用:使用 VisualVM 还可以监控远程 Java 应用的运行情况,查看 JVM 相关信息、内存使用情况、CPU 消耗情况等。 * 查看 JVM 相关信息:使用 VisualVM 可以查看 JVM 相关信息,如堆栈信息、垃圾回收...
启动后,VisualVM会自动发现本地的Java进程,也可以手动添加远程JVM。 总的来说,VisualVM是Java开发者必备的工具之一,它可以帮助优化代码、调试问题、理解应用程序的运行机制,从而提高软件的性能和稳定性。通过...
2. **连接远程JVM**:如果需要监控远程Java应用,需要在目标机器上配置JDK的`jvm.options`文件,开启远程监控端口,然后在VisualVM中添加远程主机。 3. **选择分析模块**:根据需求选择合适的分析模块,例如选择...
VisualVM可以连接到MBeans服务器,查看和操作MBeans,从而远程管理Java应用程序,执行配置更改或获取运行时信息。 5. **CPU和内存分析**: VisualVM可以深入到CPU使用率的详细级别,展示每个线程的执行情况,帮助...
4. **Java VisualVM**:这是Oracle JDK自带的一个强大的可视化工具,可以用来查看和分析JVM的性能数据,包括CPU使用率、内存状况、线程状态等。通过JMX,VisualVM可以远程连接到运行中的Java应用进行监控。 5. **...
##### 3.5 监控远程Java应用 除了本地应用外,VisualVM还可以连接到远程主机上的Java应用进行监控。要实现这一点,需要先确保远程主机上安装了JMX代理服务,并允许远程访问。配置完成后,在VisualVM的导航栏中选择...