注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

和申的个人主页

专注于java开发,1985wanggang

 
 
 

日志

 
 

利用jvmstat进行jvm性能监视  

2011-05-20 16:52:47|  分类: java调优 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

摘自:http://hi.baidu.com/tister/blog/item/cf36f8dd0d62d2ee76c6381c.html利用jvmstat进行jvm性能监视
2007-04-09 13:29


最近需要在 Linux 系统上对 Java 的应用系统进行监测,就用到了 JDK1.5 附带的工具 jps ( Java Virtual Machine Process Status Tool ,查看 JVM 进程状态的工具), jstat(Java Virtual Machine Statistics Monitoring Tool ,运行数据监测工具 ) 以及 jstatd ( jstat 的 daemon 程序,利用 RMI 进行远程监控)。(建议可以使用 jvmstat 包,可视化的 jstat 监控工具,可以在 http://java.sun.com/performance/jvmstat/ 下载)

部署过程描述如下:

1. 在需要监测的机器(我这里是 Linux 机器)部署相关应用:

a)在你需要进行监测的机器上安装 JDK1.5 (狂晕一阵子),别倒下(这个部分就不多说了,因为如果这里还要解释的话,那我就晕了)。

b)正确设置 Java 的运行环境。

c)启动 jstatd 进程。

命令如下: ./jstatd -J-Djava.security.policy=all.policy

一般来说呢,这里是会出现问题的,那就是 permission 的问题了,还好, Sun 的网站上给了相关的解决方法,方法如下,在 vi $JAVA_HOME/jre/lib/security/java.policy文件中添加下面的代码:

grant codebase "file:${java.home}/../lib/tools.jar" {

permission java.security.AllPermission;

};

然后重新启动 jstatd 进程。

d)完了,别让人乱动就好了,我经常是不小心就按 CTRL+C 把程序关闭了。

2.       在客户端(监控者使用的机器)的操作:

a)使用 jps 查看远端机器有哪些 JVM 进程在使用当中,命令如下:

jps 172.25.1.24 // 远端机器的 IP 地址或名称

屏幕输入如下:

13686 Jstatd

14115 XXXJavaServer

15117 Jserver

b)从上面可以看到远端机器的 Jstatd 进程已经启动起来了。我们就可以使用 jstat 对相关进程的具体情况进行查看。

Jstat 命令用法如下:

jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

解释如下:

Option 包括以下选项:

-class

-compiler

-gc

-gccapacity

-gccause

-gcnew

-gcnewcapacity

-gcold

-gcoldcapacity

-gcpermcapacity

-gcutil

-printcompilation

Vmid 就是 jps 查看到的进程 id ,如上 Jserver 的进程 id 是 15117 。

Interval 是时间间隔,单位为毫秒, 1000 就是一秒。

Count 就是需要查看的次数。

例子假设我们需要查看 172.25.1.24 机器 vmid 为 15117 的 gc 的情况,可以输入下面的命令:

jstat -gc 15117@172.25.1.24 1000 3

然后你能看到四行信息(一行为 title ,剩下的就是你要的信息了),仔细看看就可以发现很多信息的了。

c) 那么下面就开始配置可视化的监控包, jvmstat ,下载好了后,解压到任意目录。

执行 visualgc ,然后就可以看到可视化的监控窗口。

例:

               java -Xbootclasspath/p:"c:\Program Files\Java\jdk1.5.0_06\lib\tools.jar" -jar e:\jvmstat-3_0\jvmstat\jars\visualgc.jar 9088@10.5.1.116

成功执行后你就能看见一个 java 的监视窗口(样子还蛮专业的),这个时候就 可以开始监视了。


以下提供一个短程序,您可以运行来测试使用
jvmstat
进行监视。
StatGen.java
import java.util.ArrayList;
import java.util.List;
public class StatGen {
static final int MAX_BLOCK = 8*1024*100;
public static void main(String[] args) {
try{
int numLoops = 1;
if (args.length > 0){
numLoops = Integer.parseInt(args[0]);
}
System.out.println("#loops="+numLoops);
List<long[]> list = new ArrayList<long[]>(numLoops);
for (int i=0;i<numLoops;i++){
int sz = (int) (Math.random()*MAX_BLOCK);
long[] garbage = new long[sz];
if (sz % 5 == 0){
list.add(garbage);
}
System.out.println("Sleeping 0.5s");
Thread.sleep(500);
}
System.out.println("Done");
} catch (Throwable t) {
t.printStackTrace();
}
System.exit(0);
}
}

参考:
http://www.mit.msn.to/devel/jvmstat.html
http://www.ibm.com/developerworks/cn/opensource/os-ag-stats/index.html

  评论这张
 
阅读(1423)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016