博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用JDK1.5的工具对远程的Java应用程序进行监测(摘录)
阅读量:7039 次
发布时间:2019-06-28

本文共 1931 字,大约阅读时间需要 6 分钟。

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

本文转自kenty博客园博客,原文链接http://www.cnblogs.com/kentyshang/archive/2009/08/20/1550747.html如需转载请自行联系原作者

kenty

你可能感兴趣的文章
C3P0数据库连接池
查看>>
通过Java反射调用方法
查看>>
卷积神经网络在自然语言处理的应用
查看>>
数值类型与字节数组之间的相互转换
查看>>
uWSGI + Django @ Ubuntu
查看>>
iOS微信分享功能简单实现
查看>>
发往日本的电子邮件经常退信吗?
查看>>
传入参数方法,参数值变化
查看>>
Mongodb Sharding Cluster 三台
查看>>
C Primer Plus 第7章 C控制语句:分支和跳转 7.2 if语句中添加 else 关键字
查看>>
smartrpc使用--tcpserver服务
查看>>
Access denied for user 'XXX'@'localhost' (using password: YES)
查看>>
ORACLE下删除当前用户下所有对象
查看>>
获取宽度高度常用javascript代码总结
查看>>
远程无法复制文件解决办法
查看>>
Spring boot with Oracle
查看>>
运算符重载的另一个解决方案:类型转换
查看>>
Linux下排查JVM的CPU偏高问题
查看>>
Alamofire4.x开源代码分析(二)请求参数和编码
查看>>
Android设计模式系列(10)--SDK源码之原型模式
查看>>