jstat和jvisualVm

一.Java VisualVM 概述


对于使用命令行远程监控jvm太麻烦jdk1.6Oracle提供了一个新的可视化的。JVM监控工具Java VisualVMjvisualvm.exeJDKbin目录下。

双击启动Java VisualVM后可以看到窗口左侧“应用程序”栏中有“本地”、“远程、“快照”三个项目。

“本地”下显示的是在localhost运行的Java程序的资源占用情况,如果本地有Java程序在运行的话启动Java VisualVM即可看到相应的程序名,点击程序名打开相应的资源监控菜单,以图形的形式列出程序所占用的CPUHeapPermGen、类、线程的 统计信息。


“远程”项下列出的远程主机上的Java程序的资源占用情况,但需要在远程主机上运行jstatd守护程序

 


VisualVM分为3类,本地它会自动侦测到,并显示出来

 

双击Local下的任一节点,看到右边的变化,你可以监控CPU,内存,类,线程等运行状况,实时监控服务器性能。

 


右键VisualVM我们可以看到Thread Dump, Heap Dump

Thread Dump很快,马上就可以看到结果

 

 

Heap Dump要稍花费一些时间(可以看到当前heap里对象的数量及占用的比例,做OOM很好用)

 

 

 

对其功能不再做描述,可以查阅网上相关质量,我们主要讲的是如何使用VisualVM远程监控。


二.使用visualvm 远程监控 JVM

1.测试环境

Ubuntu Server 10.01

 

2. 在服务器上安装jstatd组件

使用apt-get命令安装openjdk即可:

 

Java代码 收藏代码
  1. sudo apt-get install openjdk-6-jdk

 

3.在服务器上配置jstatdsecurity policy文件

jstatd是一个监控JVM从创建到销毁过程中资源占用情况并提供远程监控接口的RMIRemote Method Invocation,远程方法调用)服务器程序,它是一个Daemon程序,要保证远程监控软件连接到本地的话需要jstatd始终保持运行。

jstatd运行需要通过-J-Djava.security.policy=***指定安全策略,因此我们需要在服务器上建立一个指定安全策略的文件jstatd.all.policy,文件内容如下:

 

Java代码 收藏代码
  1. grant codebase "file:${java.home}/../lib/tools.jar" {
  2. permission java.security.AllPermission;
  3. };

 

 

4.修改服务器hosts文件中的IP地址

 

 

要使Java VisualVM成功连接到远程服务器上,服务器端应该在/etc/hosts文件中把本机地址设为本机的IP地址。使用hostname -i命令查看,如果显示的是127.0.0.1或者与本机实际IP不一致的话,需要把/etc/hosts文件中相应的地址改为本机实际IP

 

5.运行jstatd守护程序

 

 

由于jstatd需要保持一直运行,所以建议使用screen命令执行jstatd程序,命令如下:

Java代码 收藏代码
  1. screen jstatd -J-Djava.security.policy=jstatd.all.policy

 

如果需要RMI日志功能的话,还可以在启动参数中加入-J-Djava.rmi.server.logCalls=true

Java代码 收藏代码
  1. screen jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.logCalls=true

 

 

jstatd开始运行后,使用CTRL+A+D断开screen界面,回到shell界面。如果想切换回jstatd运行界面的话,使用screen -r -d命令即可。

 

6.通过Java VisualVM连接到服务器监控Java程序

Java VisualVM程序窗口左侧远程项目右键选择添加远程主机,在弹出的对话框中输入远程主机的IP地址,确认提交后即可看到相应的远程主机和在上面运行的Java程序,连接成功后应该会显示Jstatd及其PID

 

通过以上方式连接服务器发现一个问题,不能监控CPU。提示我们建立JMX,建立JMX提示要求端口号。(JMX:Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和 网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。而Visual VM是通过JMX来和远程Java应用联系的)。

 

 

7.Tomcat中配置

下面我们为54服务器的tomcat配置jvm启动参数。tomcatcatalina.sh中添加如下参数:

Java代码 收藏代码
  1. JAVA_OPTS='-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false'

 

或:

Java代码 收藏代码
  1. JAVA_OPTS=’-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=192.168.1.54 其他配置’

 

 

注:1.-Dcom.sun.management.jmxremote.port:这个是配置远程connection的端口号的,要确定这个端口没有被占用

2.-Dcom.sun.management.jmxremote.ssl=false 指定了JMX是否启用ssl

3.-Dcom.sun.management.jmxremote.authenticate=false 指定了JMX是否启用鉴权(需要用户名,密码鉴权)

2,3两个是固定配置,是JMX的远程服务权限的

4.-Djava.rmi.server.hostname:这个是配置serverIP

 

 

连接成功,现在我们可以远程监控服务器性能,可以配合jmeter进行了一个长时间的加压,在加压过程中重点关注了系统资源的使用情况。

三.参考博客

http://mahuihuang.blog.163.com/blog/static/745292520113202321494/

 

http://wolfdream.iteye.com/blog/1032712

 

http://sjsky.iteye.com/blog/705323

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值