Java VisualVM使用手册
2015-12-22 15:58
531 查看
ava虚拟机JVM调优的工具很多,介绍一下一个开源性能监控工具VisualVM的远程配置功能。
VisualVM是一个以监控、显示本地或者远程服务器JVM工作情况,进行性能调优的工具。借助VisualVM,我们可以实现对JVM内存各个子池、CPU、垃圾收集器等方面进行监控,从而发现程序代码中潜在的泄露点和配置问题。
VisualVM是一个Java编写的绿色软件,属于开源范畴,官方地址为:visualvm.java.net。VisualVM是使用插件Plugin的方式提供功能,默认提供了一些基本检测功能。如果需要进行拓展,可以使用下载插件的功能进行。
VisualVM在监控本地JVM的时候是很方便的。只要应用程序运行起来,我们就可以从VisualVM里面监控出来。
远程服务器上的JVM监控就需要一些额外的配置了。目前VisualVM支持两种监控方法:Jstatd方法和基于JMX的方法。我们先介绍Jstatd方法。
grant codebase "file:/usr/java/jdk1.6.0_20/lib/tools.jar" {
permission java.security.AllPermission;
};
②、启动jstatd进程
方法一:
[root@device ~]# hostname -i
192.168.136.27
如果显示是127.0.0.1,则需要修改/etc/hosts文件,去掉对本机名的配置,让本机名解析到它的IP地址,如192.168.136.27
./jstatd -J-Djava.security.policy=./jstatd.all.policy -J-Djava.rmi.server.logCalls=true
-J-Djava.rmi.server.logCalls=true为打印日志
方法二:
/usr/java/jdk1.6.0_20/bin/./jstatd
-J-Djava.security.policy=/usr/java/jdk1.6.0_20/bin/./jstatd.all.policy -Djava.rmi.server.hostname=192.168.136.27 -J-Djava.net.preferIPv4Stack=true -J-Djava.rmi.server.logCalls=true
③此时,在监控程序VisualVM添加一个远程主机之后,自动显示出监控进程情况。
在Jstatd监控方式下,Sampler、MBeans、JConsole是不能启用的。
如图:
我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.
这个工具就在J***A_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面
这个工具就在J***A_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面
从左边Applications树中可以知道,不光可以监控本地JVM运行情况, 还可以监控远程机器上的JVM运行情况.
本地监控:只要打开某个J***A程序就会自动的加入到本地监控中.
因为本地监控无需配置, 所以这里主要介绍监控远程JVM
要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, Visualvm目前支持两种remote
connection方式.
分别是jstatd和JMX方式:
这里我主要介绍的是通过JMX方式.
通过JMX连接远程机器, 需要经过下面的配置:
1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
a.进入J***A_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文件,加入如下信息:
J***A_OPTS="$J***A_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服务.
如果是java server,则在脚本中加入 -Dcom.sun.management.jmxremote.port=10004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.136.21
即可。
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信息, 内存信息, 统计加载类数量,线程信息.
VisualVM是一个以监控、显示本地或者远程服务器JVM工作情况,进行性能调优的工具。借助VisualVM,我们可以实现对JVM内存各个子池、CPU、垃圾收集器等方面进行监控,从而发现程序代码中潜在的泄露点和配置问题。
VisualVM是一个Java编写的绿色软件,属于开源范畴,官方地址为:visualvm.java.net。VisualVM是使用插件Plugin的方式提供功能,默认提供了一些基本检测功能。如果需要进行拓展,可以使用下载插件的功能进行。
VisualVM在监控本地JVM的时候是很方便的。只要应用程序运行起来,我们就可以从VisualVM里面监控出来。
远程服务器上的JVM监控就需要一些额外的配置了。目前VisualVM支持两种监控方法:Jstatd方法和基于JMX的方法。我们先介绍Jstatd方法。
1、Jstatd方法
①、Jstatd方法是利用后台的RMI守护进程来实现对远程JVM的监控。首先创建一个监控策略文件,名字为jstatd.all.policy,放于/usr/java/jdk1.6.0_20/bin下。grant codebase "file:/usr/java/jdk1.6.0_20/lib/tools.jar" {
permission java.security.AllPermission;
};
②、启动jstatd进程
方法一:
[root@device ~]# hostname -i
192.168.136.27
如果显示是127.0.0.1,则需要修改/etc/hosts文件,去掉对本机名的配置,让本机名解析到它的IP地址,如192.168.136.27
./jstatd -J-Djava.security.policy=./jstatd.all.policy -J-Djava.rmi.server.logCalls=true
-J-Djava.rmi.server.logCalls=true为打印日志
方法二:
/usr/java/jdk1.6.0_20/bin/./jstatd
-J-Djava.security.policy=/usr/java/jdk1.6.0_20/bin/./jstatd.all.policy -Djava.rmi.server.hostname=192.168.136.27 -J-Djava.net.preferIPv4Stack=true -J-Djava.rmi.server.logCalls=true
③此时,在监控程序VisualVM添加一个远程主机之后,自动显示出监控进程情况。
在Jstatd监控方式下,Sampler、MBeans、JConsole是不能启用的。
如图:
2、JMX方式
JMX方式是我们监控应用服务器(JBoss)常用的方法,使用JMX监控的功能不支持Visual GC。我们经常需要对我们的开发的软件做各种测试, 软件对系统资源的使用情况更是不可少, 目前有多个监控工具, 相比JProfiler对系统资源尤其是内存的消耗是非常庞大,JDK1.6开始自带的VisualVM就是不错的监控工具.
这个工具就在J***A_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面
这个工具就在J***A_HOME\bin\目录下的jvisualvm.exe, 双击这个文件就能看到一个比较直观的界面
从左边Applications树中可以知道,不光可以监控本地JVM运行情况, 还可以监控远程机器上的JVM运行情况.
本地监控:只要打开某个J***A程序就会自动的加入到本地监控中.
因为本地监控无需配置, 所以这里主要介绍监控远程JVM
要进行远程监控, 本机的VisualVM就必须和远程的JVM要进行通信, Visualvm目前支持两种remote
connection方式.
分别是jstatd和JMX方式:
这里我主要介绍的是通过JMX方式.
通过JMX连接远程机器, 需要经过下面的配置:
1. 修改远程机器JDK配置文件 (我这里远程机器是linux).
a.进入J***A_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文件,加入如下信息:
J***A_OPTS="$J***A_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服务.
如果是java server,则在脚本中加入 -Dcom.sun.management.jmxremote.port=10004 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.136.21
即可。
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信息, 内存信息, 统计加载类数量,线程信息.
相关文章推荐
- javadoc生成开发文档
- 解决 jsp eclipse异常 【The import javax.servlet cannot be resolved】
- java获取两个日期间的月份集合
- Java socket通讯(一)
- LayoutInflater 用法
- TestNG入门教程(TestNG介绍、在Eclipse中安装TESTNG、测试小例子、基本注解、如何执行测试、按顺序执行Case、异常测试、组合测试、参数化测试、忽略测试、依赖测试、测试结果报告)
- 轻量级JavaEE企业应用实战(十四)
- spring事务传播
- Java初学习 - 线程同步的一点说明
- java.lang.Runtime类知多少?
- Java NIO:浅析I/O模型
- 第二章 Spring MVC入门
- Spring 注解 @Resource和@Autowired
- eclipse打开后处于无响应状态
- window 7 下用MyEclipse编写Java程序连接HBase时遇到的问题
- Maven构建SpringMVC项目详解
- 完美解决SSH项目Hibernate update时候org.springframework.dao.DuplicateKeyException
- 用 eclipse 创建javafx 可以运行但是报错的解决方法
- 增量更新开发语言Java转型安卓移动开发的行进
- Java中byte转换int时与0xff进行与运算的原因