Jvmstat监控JVM内存

来源:互联网 发布:搞基漫画软件 编辑:程序博客网 时间:2024/06/04 20:11

0准备工作

jstat(Java Virtual Machine Statistics Monitoring Tool,运行数据监测工具)工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。Jvmstat是jstat的内存收集功能图形化升级版本。很直观实用。所以本文讲解Jvmstat在本地和远程监控JVM内存的方法。

需要的准备工作有两点:

1)       下载并安装好sun jdk。

2)       了解如何查看jvm实例进程id(pid)。

最简单的是通过%JAVA_HOME%\bin下的jps( Java Virtual MachineProcess Status Tool ,查看 JVM 进程状态的工具)查看,查看本地JVM进程不需要输入参数。

麻烦点的是通过windows任务管理器找java进程的进程id或者linux下通过ps aux| grep java 找pid。

1监控本地JVM内存

1.1Windows系统

命令为:

%jvmstat_home%\bat\visualgc.cmdpid

pid为要监控的jvm实例的进程id。

1.2Linux系统

命令为:

%jvmstat_home%\bin\visualgcpid

pid为要监控的jvm实例的进程id。需要注意对visualgc 授权。

2监控远程JVM内存

2.1被监控主机配置

这里需要用到jstatd工具( jstat 的 daemon 程序,利用 RMI 进行远程监控)。在被监控的主机上部署运行jstatd,命令如下:

 ./jstatd -J-Djava.security.policy=all.policy

一般来说呢,这里是会出现问题的,那就是 permission 的问题了,Sun 的网站上给了相关的解决方法,方法如下,在%JAVA_HOME%/jre/lib/security/java.policy文件中添加下面的代码:

grant codebase"file:${java.home}/../lib/tools.jar" {

permissionjava.security.AllPermission;

};

然后重新启动 jstatd 进程。

注意,别关闭起着jstatd 进程的命令提示符或者终端,否则就关闭监控监听守护进程了。

2.2监控主机配置

使用 jps 查看远端机器有哪些 JVM 进程在使用,命令如下:

jps172.7.9.201// 远端机器的 IP 地址或名称

比如输出:

19727 JConsole20454 Jstatd19171 ZooKeeperMain19685 LogServerStartStopApp
如1.1和1.2分别操作windows和linux下的Jvmstat。命令分别为:从上面可以看到远端机器的 Jstatd 进程已经启动起来了。

%jvmstat_home%\bat\visualgc.cmdpid@172.7.9.201

%jvmstat_home%\bin\visualgcpid@172.7.9.201

pid为要监控的jvm实例的进程id。

成功执行后你就能看见一个 java 的监视窗口(样子还蛮专业的),这个时候就 可以开始监视了。