使用jvisualvm的jstatd方式遠程監控Java程序


  使用Java自帶的jvisualvm調試Java程序,可以查看CPU、內存、類及線程等信息,還可以進行Dump,無疑是一個利器

  由於客戶端是Windows、服務端是Linux,並且是最小安裝的Linux,沒有圖形界面,因此需要進行遠程調試

一、客戶端:Windows

    打開%JAVA_HOME%/bin/jvisualvm.exe,在“遠程”節點,右鍵,“添加遠程主機”,如下所示:

輸入主機IP地址,修改顯示名,點擊確定,如下所示:

 

二、服務端:Linux

  在$JAVA_HOME/bin/下新建策略文件:

[teld@T-SHA1-FLK-01 bin]$ touch jstatd.all.policy
[teld@T-SHA1-FLK-01 bin]$ vi jstatd.all.policy 

 輸入如下內容:

grant codebase "file:/usr/java/default/lib/tools.jar" {   
    permission java.security.AllPermission;   
};

啟動jstatd:

[teld@T-SHA1-FLK-01 bin]$./jstatd -J-Djava.security.policy=./jstatd.all.policy

這時在客戶端即可看到服務端上運行的所有Java程序了,如下所示:

雙擊某一個Java程序節點,可以看具體的CPU、內存、類及線程信息

三、遇到的坑

  3.1 插件安裝

   jvisualvm可以安裝插件,但是使用時,發現默認的插件提供網站已經不能用了:

  通過瀏覽器直接訪問,發現網站已經不能用了:

http://www.oracle.com/splash/java.net/maintenance/index.html

   新地址已經遷移到github:

https://visualvm.github.io/pluginscenters.html

  根據版本下載對應的插件到本地,然后通過本地安裝即可,以安裝Visual GC為例,如下所示:

 

安裝完后,可以發現多了一個Visual GC的Tab頁:

  可以很直觀的觀察JVM里的內存分配

 3.2 CPU查看、抓取Dump

   使用這種遠程的方式,沒法查看CPU、沒法抓取Dump,因此局限性很大,還是應該使用本地的方式比較穩妥

 


免責聲明!

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



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