使用 jvisualvm 远程监控 JVM
2023-09-27 14:23:43 时间
一、jmx 方式
加上如下启动参数,以 tomcat 为例,修改 bin\catalina 文件,在开始位置添加 JAVA_OPTS
JAVA_OPTS="-Djava.rmi.server.hostname=192.168.8.229 -Dcom.sun.management.jmxremote.port=1100 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" # 开启 JMX 远程服务权限 # -Dcom.sun.management.jmxremote.port:配置远程 connection 的端口号 # -Dcom.sun.management.jmxremote.ssl:指定 JMX 是否启用 ssl # -Dcom.sun.management.jmxremote.authenticate:指定 JMX 是否启用密码 # -Djava.rmi.server.hostname:配置 Server IP(不要使用 127.0.0.1) # -Dcom.sun.management.jmxremote.rmi.port=2222 # -Dcom.sun.management.jmxremote.local.only=false # -Dcom.sun.management.jmxremote=true
JDK8 后不集成 jvisualvm
https://visualvm.github.io/download.html
# windows 上启动 start /b visualvm_202\bin\visualvm.exe --jdkhome "D:\PcAPP\jdk-11.0.7" --userdir "data"
JDK8 可以直接使用,Windows 下打开 JDK 目录下的 bin/jvisualvm.exe 程序
添加 JMX 连接,填写地址和端口即可
查看堆栈
二、Jstatd 方式
在 $JAVA_HOME/bin 下创建 jstatd.all.policy 文件
cd /opt/jdk-11.0.7/bin/
vim jstatd.all.policy
https://stackoverflow.com/questions/51032095/starting-jstatd-in-java-9
# 有 tools.jar(JDK8) grant codebase "file:${java.home}/lib/tools.jar" { permission java.security.AllPermission; }; # 没有 tools.jar(JDK11) grant codebase "jrt:/jdk.jstatd" { permission java.security.AllPermission; }; grant codebase "jrt:/jdk.internal.jvmstat" { permission java.security.AllPermission; };
启动
cd /opt/jdk-11.0.7/bin/
nohup jstatd -J-Djava.rmi.server.hostname=192.168.8.136 -J-Djava.security.policy=./jstatd.all.policy -p 1099 &
jps -l
相关文章
- 来聊聊 OpenJDK 和 JVM 虚拟机
- 通过jconsole监控tomcat JVM 内存、线程、CPU
- 【JVM · 调优】监控及诊断工具
- JVM系列十(虚拟机性能监控神器 - BTrace).
- JVM系列八(虚拟机性能监控命令).
- JVM系列五(Javac 字节码编译器).
- 深入JVM对象引用
- 面渣逆袭:JVM经典五十问,这下面试稳了!
- JVM之指针压缩&内存如何设置
- JVM调优03-所有垃圾收集器总结
- IDEA spark 中scala的编译版本问题解决NoSuchMethodError (jvm )
- jvm系列(一):java类的加载机制
- JVM性能监控常用命令-1
- 【jvm我能讲两小时053】ParNew收集器是如何进行垃圾回收的?
- 【jvm我能讲两小时044】根节点枚举有了解过吗?