利用JDK1.5的工具对远程的Java应用程序进行监测(摘录)

简介:
最近需要在 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

相关文章
|
27天前
|
人工智能 安全 Java
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
48 7
|
24天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
137 83
|
21天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
38 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
24天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
53 26
|
25天前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
48 24
|
22天前
|
缓存 Java 开发者
Java多线程并发编程:同步机制与实践应用
本文深入探讨Java多线程中的同步机制,分析了多线程并发带来的数据不一致等问题,详细介绍了`synchronized`关键字、`ReentrantLock`显式锁及`ReentrantReadWriteLock`读写锁的应用,结合代码示例展示了如何有效解决竞态条件,提升程序性能与稳定性。
83 6
|
20天前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
28 2
|
24天前
|
数据采集 存储 监控
Java爬虫:数据采集的强大工具
在数据驱动的时代,Java爬虫技术凭借其强大的功能和灵活性,成为企业获取市场信息、用户行为及竞争情报的关键工具。本文详细介绍了Java爬虫的工作原理、应用场景、构建方法及其重要性,强调了在合法合规的前提下,如何有效利用Java爬虫技术为企业决策提供支持。
|
1月前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
52 6
|
27天前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
26 2
下一篇
DataWorks