最近需要在
				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
				的监视窗口(样子还蛮专业的),这个时候就
				可以开始监视了。