1、jconsole监控本地windows java进程
监控本地java比较简单,只需要双击运行 JAVA_HOME/bin/jconsole 即可,或者也可以在目录窗口中输入jconsole 即可弹窗如下窗口
在本地进行选项中双击想要监控的进程即可
可能出现的问题
在选中对应的进程的时候,显示“未对此进程启用管理代理”的错误(在命令窗口中使用jps的时候会出现“process information unavailable”),可能是因为更改过登录账号大小写发生过更改导致
解决办法:
1、退出所有的java程序
2、删除C:\Users\Administrator\AppData\Local\Temp目录中的hsperfdata_[user_name] 文件夹
3、重新启动java程序
2、jconsole监控远程linux java进程(tomcat)
1、修改jmxremote.password文件
切换到JAVA_HOME中的jre/lib/management目录执行
mv jmxremote.password.template jmxremote.password
vim jmxremote.password
将注释的monitorRole 和controlRole 放开,并修改口令
2、在tomcat的catalina.sh 中添加如下内容,如果不是tomcat,是其他java应用程序,则在其启动脚本中添加java启动参数即可
JAVA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=192.168.3.235 -Dcom.sun.management.jmxremote"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.pwd.file=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141.x86_64/jre/lib/management/jmxremote.password"
其中192.168.3.4为tomcat所在的IP地址,prot为开放给jconsole的端口,/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.141.x86_64/为JAVA_HOME
3、修改/etc/hosts文件
修改
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
为
192.168.3.235 localhost localhost.localdomain localhost4 localhost4.localdomain4
4、打开jconsole
打开jconsole,输入地址、用户名、口令
点击连接,弹窗警告窗口,选择不安全,弹窗如下窗口表示远程连接成功
追加:
使用jdk自带的jvisualvm.exe进行分析
1、本地安装监控
jvisualvm本地分析比较简单,双击运行程序即可看到本机上的java进程
如果需要安装如Visual GC之类的插件的话可在工具>插件中进行安装,需要注意的是可能自带的默认下载url无法下载,需要在设置中更改下载url
如jdk1.7的可使用https://visualvm.github.io/archive/uc/7u60/updates.xml.gz,配置成或重新检查则会出现可安装的插件列表
2、远程监控
远程监控监控可分为jstatd和JMX方式
JMX方式和使用jconsole监控远程linux java进程配置方式一样
jstatd方式则需要在需要监控的服务器启动jstatd,方式为:
在JAVA_HOME/bin中新建jstatd.all.policy文件内容为
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
然后执行启动命令:
jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=192.168.3.232
-- 192.168.3.232为服务器IP地址
由于远程监控方式获取的权限有限,需要使用jstatd和JMX两种方式一起使用
也可以直接在服务器中通过jmap命令:如
jmap -dump:format=b,file=testdump.bin 进程号
的方式直接在服务器中生成dump文件,然后下载到本地通过jvisualvm 中的文件>装载 进行分析