注意:VisualVM連接遠端伺服器有兩種方式:JMX和jstatd,兩種方式都無法完美支援所有功能,
例如JMX不支援VisualGC,
#jstatd不支援CPU監控,
實際使用可同時配置上並按需選用。
jvisualvm程式新增遠端連接,請關閉本機防火牆。
正常的springboot啟動指令為
nohup java -jar demo.jar &
使用監控後:
nohup java -Djava.rmi.server.hostname=192.168.81.149 \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=1099 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -jar jvm-1.0-SNAPSHOT.jar &
java -Djava.rmi.server.hostname=192.168.81.149 \ -Dcom.sun.management.jmxremote \ -Dcom.sun.management.jmxremote.port=1099 \ -Dcom.sun.management.jmxremote.authenticate=false \ -Dcom.sun.management.jmxremote.ssl=false \ -jar jvm-1.0-SNAPSHOT.jar
jvm -1.0-SNAPSHOT.jar 是專案的jar套件
192.168.81.149 是專案部署的機器ip
1099是jvisualvm需要連接的遠端連接埠號碼
authenticate=false不啟用,使用者認證
打開後又可能啥都沒有,空蕩蕩的,這是因為項目需要有人訪問下,隨便都行
這種方式需要你手動安裝JDK才行, 或你知道jdk在哪裡
在jdk目錄下的bin創建
vi jstatd.all.policy
我這邊指定了絕對路徑,方便排除路徑方面的影響
grant codebase "file:${java.home}/../lib/tools.jar" { permission java.security.AllPermission; };
啟動jstatd後台應用端口(預設為1099) 使用參數-p可指定其它端口
jstatd -J-Djava.security.policy=jstatd.all.policy \ -J-Djava.rmi.server.hostname=192.168.81.149 \ -J-Djava.rmi.server.logCalls=true -p 1098
(我是在/usr/local/jdk1.8.0_161/bin路徑下運行的下面的命令,該路徑下就有jstatd.all.policy文件。如果是在其他地方執行,記得指定絕對或相對路徑)
其中,
-J-Djava.security.policy=jstatd.all.policy 指定路径 -J-Djava.rmi.server.logCalls=true 打印日志 -J-Djava.rmi.server.hostname=192.168.81.149 指定主机名,主机名应该和你用hostname -i命令执行出来的结果一致。
啟動專案
java -jar jvm-1.0-SNAPSHOT.jar
以上是Jvisualvm監控遠端SpringBoot專案的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!