使用 jvisualvm 遠程監控 JVM


一、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


https://docs.oracle.com/en/java/javase/11/tools/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM