最近需要在
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
的网站上给了相关的解决方法,方法如下,在
jdk/…/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
,剩下的就是你要的信息了),仔细看看就可以发现很多信息的了(如果不明白,可以问我,
6-6
)。
c)
那么下面就开始配置可视化的监控包,
jvmstat
,下载好了后,解压到任意目录。
执行
visualgc
,然后就可以看到可视化的监控窗口。不过,好像现在只提供
Linux
下的
visualgc
的启动脚本,所以在
Windows
下或者
Linux
最好使用我下面提供的方式:
在
Linux
下:
/usr/java/jdk1.5/bin/java –Xbootclasspath/p:” /usr/java/jdk1.5/lib/tools.jar” –jar jvmstat/jars/visualgc.jar vmid@server
在
Windows
下也一样,就是改改
jdk
的路径就好了。
成功执行后你就能看见一个
java
的监视窗口(样子还蛮专业的),这个时候就
可以开始监视了。