在測試環(huán)境復(fù)現(xiàn)出了的研發(fā)自測沒有發(fā)現(xiàn)的疑難問題如性能問題靠闭,排除服務(wù)器本身的問題之后枫攀,研發(fā)就需要定位問題。
我們可以直接遠(yuǎn)程監(jiān)控測試環(huán)境的jvm查看監(jiān)控進(jìn)程的運(yùn)行情況么禽笑?
我們可以直接遠(yuǎn)程dump測試環(huán)境的運(yùn)行進(jìn)程分析線程阻塞原因么?
其實(shí)僅需通過jvisualvm
這個jdk自帶的圖形化監(jiān)控工具蛤奥,去遠(yuǎn)程監(jiān)控測試環(huán)境的jvm就可以解決上述問題。
Jvisualvm的啟動
- windows系統(tǒng)配置jdk環(huán)境變量僚稿。
-
cmd輸入jvisualvm直接啟動 如下圖
以下監(jiān)控方式
springboot
項(xiàng)目為例介紹
方式一 啟動Java項(xiàng)目配置jmx啟動參數(shù)
- 啟動遠(yuǎn)程應(yīng)用需指定jmx相關(guān)配置
java -jar
-Djava.rmi.server.hostname=遠(yuǎn)程服務(wù)ip
-Dcom.sun.management.jmxremote.port=18888
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.managementote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
xxx.jar
-
本地jvisualvm右鍵遠(yuǎn)程添加遠(yuǎn)程主機(jī)ip
- 右鍵遠(yuǎn)程分組下的遠(yuǎn)程ip點(diǎn)擊
添加JMX鏈接
后輸入上一步指定的jmx的端口號
-
添加成功后即可監(jiān)控應(yīng)用的運(yùn)行情況
方式二 使用服務(wù)端jdk的jstatd
- 服務(wù)器上要安裝jdk
- 在jdk的安裝目錄bin下新建文件jstatd.all.policy輸入如下內(nèi)容(也可以寫絕對路徑)
grant codebase "file:${java.home}/../lib/tools.jar" {
permission java.security.AllPermission;
};
- 在jdk的安裝目錄bin執(zhí)行jstatd -J-Djava.security.policy=jstatd.all.policy -J-Djava.rmi.server.hostname=linux_ip
- 使用jvisualvm遠(yuǎn)程監(jiān)控監(jiān)控方式使用
小結(jié)
- 方式一啟動時(shí)加JVM參數(shù)凡桥,可以寫到啟動腳本中,作用范圍是當(dāng)前應(yīng)用
- 方式二是利用jdk的jstatd去監(jiān)控蚀同,作用范圍是啟動在JVM上的應(yīng)用
有疑問留言缅刽,如果有幫到你的話,記得點(diǎn)贊收藏