您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何進行JVM監控在本地和遠程的應用,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
JVM監控的概念和應用主要包括本地JVM監控和JVM監控遠程進程兩大部分內容,經過簡單試用,這些命令+圖形工具 已經足夠強大, 能滿足一般的監控要求了,如對各類內存、垃圾回收、線程狀態的監控。
JVM監控
經過查找發現其實sun的jdk中就帶有這類工具,從jdk5開始命令行有了jstat,jps,jstatd,圖形監控有了jconsole;而到了jdk6,命令有了jmap, jinfo, jstack,圖形有了jvisualvm。經過簡單試用,這些命令+圖形工具 已經足夠強大, 能滿足一般的監控要求了,如對各類內存、垃圾回收、線程狀態的監控。
圖形:visualvm
如果是本地JVM監控,則可以直接在本地的窗口中看到java應用程序。雙擊點開即可打開JVM監控窗口。
Remote它可以用來操作遠程機器。遠程機器需要啟動一個daemon:jstatd
1、遠程機器啟動jstatd
1.1、首先需要準備一個java.policy文件,保存到如/home/admin/jstatd.java.policy
grantcodebase"file:${java.home}/../lib/tools.jar"{ permissionjava.security.AllPermission; };
1.2、啟動jstatd
jstatd-J-Djava.security.policy=/home/admin/jstatd.java.policy-J-Djava.rmi.server.logCalls=true
1.3、同時需要執行一個命令看看(linux需要)
Hostname–i
如果顯示是127.0.0.1,則需要修改/etc/hosts文件,去掉對本機名的配置,讓本機名解析到它的IP地址,如10.20.131.214
2、連接遠程機器
3、點擊OK,看到會連接到遠程機器,并顯示出它下面的java進程。
jconsole
JVM監控本地應用
首先就是啟動您要JVM監控的應用,例如我用JDK1.6來啟動了Tomcat,或者Eclipse也可以,可以在任務管理器(Ctrl+Alt+Del可以調出來,或者在任務欄點擊右鍵)里看到進程ID,例如我這里是6132.
接著在JDK安裝目錄中(<JDK_HOME>/bin/jconsole.exe)啟動jconsole.exe(雙擊或者在cmd里面敲入jconsole),主界面會提示您建立一個新連接:
可以看到進程ID,選擇它,然后點擊"連接".這些ID必須都是用JDK1.6的java.exe啟動的,否則在列表里看不到.
JConsle能JVM監控內存,線程,類的數目和CPU然后點擊各個Tab可以看到詳細的輸出,詳細的輸出包括:
內存:堆/非堆,峰值,內存的各個部分,例如Perm,Eden等的大小曲線圖.
線程:峰值,所有線程的列表,堆棧跟蹤(哪個對象中的線程)等.還可以強制執行GC.
類:峰值,類總數曲線圖.
MBean:一些JVM參數的詳細MBean信息.
JVM監控遠程進程
首先需要在運行的應用上啟用遠程管理,參數如下(簡單期間就不加用戶驗證了):
java-Dcom.sun.management.jmxremote.port=1090-Dcom.sun.management. jmxremote.ssl=false-Dcom.sun.management.jmxremote. authenticate=false-jar../demo/jfc/Java2D/Java2Demo.jar
然后連接的時候選擇遠程進程,地址輸入:localhost:1090
即可.當然在別的電腦上(一般是局域網)可以輸入那個電腦的IP.
綜述:使用JConsole可以簡單的JVM監控Server狀態,但是本身要占一定的資源,不過JVM自帶的JVM監控,理論上講應該是占資源很小很小的,可以用它來方便的了解Web服務器應用進程的狀態.如果要調優應用,還是使用JProfiler等工具更好一些,當然它們占的資源也更大.
上述內容就是如何進行JVM監控在本地和遠程的應用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。