Jvmstat监控JVM内存
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 地址或名称
比如输出:
[html]
19727 JConsole
20454 Jstatd
19171 ZooKeeperMain
19685 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 的监视窗口(样子还蛮专业的),这个时候就 可以开始监视了。
补充:软件开发 , Java ,