jvisualvm远程监控Tomcat
為什么80%的碼農都做不了架構師?>>> ??
一.Java VisualVM 概述
? 對于使用命令行遠程監控jvm?太麻煩?。?在jdk1.6?中?Oracle?提供了一個新的可視化的。?JVM?監控工具?Java?VisualVM?。jvisualvm.exe?在JDK?的?bin?目錄下。
?
???雙擊啟動?Java?VisualVM?后可以看到窗口左側?“應用程序?”欄中有“?本地?”、“遠程?”?、“快照?”三個項目。
?
??“本地?”下顯示的是在?localhost?運行的?Java?程序的資源占用情況,如果本地有?Java?程序在運行的話啟動?Java?VisualVM?即可看到相應的程序名,點擊程序名打開相應的資源監控菜單,以圖形的形式列出程序所占用的?CPU?、?Heap?、?PermGen?、類、線程的?統計信息。
??“遠程”?項下列出的遠程主機上的?Java?程序的資源占用情況,但需要在遠程主機上運行?jstatd?守護程序
?
VisualVM分為?3?類,?本地?它會自動偵測到,并顯示出來
雙擊Local?下的任一節點,看到右邊的變化?,你可以監控?CPU?,內存,類,線程等運行狀況,實時監控服務器性能。
?
?右鍵?VisualVM我們可以看到?Thread?Dump,?Heap?Dump
?做?Thread?Dump?很快,馬上就可以看到結果
?
?
Heap?Dump要稍花費一些時間(可以看到當前?heap?里對象的數量及占用的比例,做?OOM?很好用)
?
?
?
對其功能不再做描述,可以查閱網上相關質量,我們主要講的是如何使用?VisualVM?遠程監控。
二.使用visualvm 遠程監控 JVM??
1.?測試環境
Ubuntu?Server?10.01
?
2.??在服務器上安裝?jstatd?組件
使用apt-get?命令安裝?openjdk?即可?:
?
Java代碼???
3.?在服務器上配置?jstatd?的?security?policy?文件
?? jstatd是一個監控?JVM?從創建到銷毀過程中資源占用情況并提供遠程監控接口的?RMI?(?Remote?Method?Invocation?,遠程方法調用)服務器程序,它是一個?Daemon?程序,要保證遠程監控軟件連接到本地的話需要?jstatd?始終保持運行。?
?? jstatd運行需要通過?-J-Djava.security.policy=***?指定安全策略,因此我們需要在服務器上建立一個指定安全策略的文件jstatd.all.policy?,文件內容如下:
?
Java代碼???
?
4.?修改服務器?hosts?文件中的?IP?地址
?
?? 要使Java?VisualVM?成功連接到遠程服務器上,服務器端應該在?/etc/hosts?文件中把本機地址設為本機的?IP?地址。使用?hostname?-i?命令查看,如果顯示的是?127.0.0.1?或者與本機實際?IP?不一致的話,需要把?/etc/hosts?文件中相應的地址改為本機實際?IP?。
?
5.?運行?jstatd?守護程序
?
? 由于?jstatd?需要保持一直運行,所以建議使用?screen?命令執行?jstatd?程序,命令如下:
Java代碼???
如果需要RMI?日志功能的話,還可以在啟動參數中加入?-J-Djava.rmi.server.logCalls=true?。
Java代碼???
?
jstatd開始運行后,使用?CTRL+A+D?斷開?screen?界面,回到?shell?界面。如果想切換回?jstatd?運行界面的話,使用?screen?-r?-d命令即可。
?
6.?通過Java?VisualVM?連接到服務器監控?Java?程序
?? 在Java?VisualVM?程序窗口左側?“?遠程?”?項目右鍵選擇?“?添加遠程主機?”?,在彈出的對話框中輸入遠程主機的?IP?地址,確認提交后即可看到相應的遠程主機和在上面運行的?Java?程序,連接成功后應該會顯示?Jstatd?及其?PID?。
?
?
? 通過以上方式連接服務器發現一個問題,不能監控CPU?。提示我們建立?JMX?,建立?JMX?提示要求端口號。(?JMX:Java?Management?Extensions?,即?Java?管理擴展?,?是一個為應用程序、設備、系統等植入管理功能的框架。?JMX?可以跨越一系列異構操作系統平臺、系統體系結構和?網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用?。而Visual?VM是通過?JMX?來和遠程?Java?應用聯系的?)。
?
?
7.?T?omcat中配置
? 下面我們為54?服務器的?tomcat?配置?jvm?啟動參數。?在?tomcat?的?catalina.sh?中添加如下參數:
Java代碼???
或:
Java代碼???
?
?
注:1.?-Dcom.sun.management.jmxremote.port?:這個是配置遠程?connection?的端口號的,要確定這個端口沒有被占用
2.?-Dcom.sun.management.jmxremote.ssl=false?指定了?JMX?是否啟用?ssl
3.?-Dcom.sun.management.jmxremote.authenticate=false???指定了JMX?是否啟用鑒權(需要用戶名,密碼鑒權)
?? 2,3兩個是固定配置,是?JMX?的遠程服務權限的
4.?-Djava.rmi.server.hostname?:這個是配置?server?的?IP?的
?
?
連接成功,現在我們可以遠程監控服務器性能,可以配合?jmeter?進行了一個長時間的加壓,在加壓過程中重點關注了系統資源的使用情況。
轉載于:https://my.oschina.net/liting/blog/520621
總結
以上是生活随笔為你收集整理的jvisualvm远程监控Tomcat的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 生产者-消费者模型
- 下一篇: Android 中input event