远程jstat Step by Step
1、 在机器上启动jstatd,一个daemon进程,更多解释见此链接
1.1、 首先需要准备一个java.policy文件,保存到如/home/admin/jstatd.java.policy
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
1.2、 启动jstatd
jstatd -J-Djava.security.policy=/home/admin/jstatd.java.policy -J-Djava.rmi.server.logCalls=true
1.3、 同时需要执行一个命令看看(linux需要)
$ hostname –i
#如果显示是127.0.0.1,则需要修改/etc/hosts文件,去掉对本机名的配置,让本机名解析到它的IP地址,如10.0.0.1
2、 做完步骤1,那可以说是万事具备了,很多问题都解决了,接下来在本地先看看远程机器上启动了多少个java进程
jps rmi://10.0.0.1
2322 Main
2321 Jstatd
可以看到这台机器上启动了两个java程序,一个是第一步我们启动的jstatd,另一个为jboss进程。
3、 看看heap的使用情况吧
参考:
- jps - the Java Process Status Application
- jstat - the Java Virtual Machine Statistics Monitoring Tool
- jstatd - the jvmstat daemon
远程Thread Dump
1、 同上,需要在被dump的机器上启动jsadebugd(Debugger)
jsadebugd 31042
#31042为jps看到的pid,对应jboss的进程ID
2、 在客户机上(需要linux系统,widnows的jdk无此功能)
jstack 10.0.0.1 //可以为机器名或IP
注意:本地和服务器上的jdk版本号必须一样。
参考: