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

转载于:https://www.cnblogs.com/kentyshang/archive/2009/08/20/1550747.html

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

  1. 使用 Eclipse 远程调试 Java 应用程序

    转载地址:使用 Eclipse 远程调试 Java 应用程序 远程调试对应用程序开发十分有用.例如,为不能托管开发平台的低端机器开发程序,或在专用的机器上(比如服务不能中断的 Web 服务器)调试程序 ...

  2. java程序ssh置顶_使用shell脚本启动远程(SSH)Java应用程序不会返回本地提示

    我见过类似的问题,所有已解决的问题已经解决/不适用. 我在启动Java应用程序的远程计算机中有一个bash脚本.相关的行将是: #!/usr/bin/env bash ... java -cp /fu ...

  3. 04-20.eri-test GKE(Google K8S Engine)上的Intellij远程调试Java应用程序

    Prepare the docker image 为了调试Java应用程序,我们需要向远程应用程序添加一些命令行参数. 在kubernetes部署有效负载中设置参数 DEBUG_OPTIONS=&qu ...

  4. 制作简单的java应用程序_使用exe4j工具制作简单的java应用程序

    首先需要下载exe4j工具并进行安装,下面是利用exe4j工具制作应用程序的步骤. 1.首先将工程导出为可运行的jar包,选择extract required libralies into gener ...

  5. idea远程调试Java应用程序

    在启动的程序中加入参数 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8087 例:java -jar -Xdebu ...

  6. UML设计java程序_利用UML序列图设计Java应用程序详解

    [IT168 技术文章] Java应用程序由许多类所构成,是Java实现面向对象应用程序的核心.类图主要描述Java应用程序中各种类之间的相互静态关系,如类的继承.抽象.接口以及各种关联.要利用UML ...

  7. Java安装程序制作工具

    Java安装程序制作工具 IzPack 是一个 Java 安装程序制作工具,能够制作一些简单的安装程序.制作出来的安装程序能在 Unix-like, MacOS X, Windows 等系统平台上运行 ...

  8. intellij远程调试_IntelliJ中的远程调试Wildfly应用程序

    intellij远程调试 远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序. Java开箱即-agentlib:jdwp[=options]支持远程调试:目标应用程序必须使用-a ...

  9. IntelliJ中的远程调试Wildfly应用程序

    远程调试Java应用程序意味着使用本地开发环境连接到远程运行的应用程序. Java开箱即-agentlib:jdwp[=options]支持远程调试:目标应用程序必须使用-agentlib:jdwp[ ...

最新文章

  1. FluentNhibernate 的数据库连接的配置
  2. 在一颗度为4的树T中,若有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树T的叶结点个数是( )
  3. redis种类型对应java类型_Redis的五种基本数据类型介绍
  4. Ubuntu出现没有正确安装GNOME电源管理器的默认配置
  5. 什么是指利用计算机和现代,现代计算机一般指什么计算机?
  6. 友盟统计java代码_SFAnalytics 分析友盟统计源码,反编译 SDK,还有部分没有 出来 android 259万源代码下载- www.pudn.com...
  7. Algorithm:贪心策略之区间选点问题
  8. 95 后程序员一出校门就拿年薪 32 万?
  9. 管理信息系统案例分析_BIM案例分析—地下空间工程(二)
  10. 标准Io编程学习笔记
  11. 程序员学习交流的网站论坛
  12. ele-calendar 组件的使用
  13. 安卓手机投屏到win10电脑
  14. 细胞和基因治疗产品法律监管问题及伦理的研究
  15. python实现火车票查询_火车票查询(python版)
  16. MIUI9系统详细刷成开发版启用root权限的教程
  17. tensorflow2.4使用GooleNet实现识别植物花朵图像项目
  18. Python在Windows下输出响铃【内容已更新】
  19. 司创电梯发卡软件_防复制电梯IC卡系统上位机管理软件设计
  20. python 解压zip密码正确但解压失败,Python实现加密的ZIP文件解压(密码已知

热门文章

  1. Kotlin入门(6)条件分支的实现
  2. Android开发笔记(五十七)录像录音与播放
  3. PHP中for循环设计无穷循环,PHP中for循环语句的几种“变态”用法
  4. 同样是程序员,他转行在新加坡卖鱼走向巅峰!
  5. Android Room 之存储 Objects 中的 List
  6. python+selenium笔记(一):元素定位方法
  7. sublime text3:呼出安装插件的快捷键
  8. 修改linux终端的提示字符
  9. 【海洋女神原创】Installshield脚本拷贝文件常见问题汇总
  10. 一台交换机不同vlan如何通信