使用Java VisualVM監(jiān)控遠程JVM

今天有同事說使用jvisualvm通過JMX方式連接到遠程應用時括荡,Visual GC插件提示“Not supported for this JVM”畸冲,無法顯示堆內(nèi)存各區(qū)的使用情況观腊。在此簡單介紹一下遠程監(jiān)控的方法梧油。

使用JMX連接到遠程JVM

通常情況下,JVisualVM可以像JConsole一樣褪子,通過JMX的方式連接到遠程服務器上的JVM褐筛,此時能獲取到JVM的基本信息(啟動參數(shù)叙身、系統(tǒng)屬性)、CPU使用情況晃痴、堆內(nèi)存整體情況以及線程的整體情況等倘核。但如果想通過Visual GC插件進一步了解堆內(nèi)各區(qū)的情況的話,就會發(fā)現(xiàn)插件此時并不工作活尊。如下各圖蛹锰,使用JMX連接到遠程服務器上的Demo1應用:

1. 添加遠程主機
2. 輸入遠程服務器的主機地址
3. 選擇創(chuàng)建JMX連接
4. 配置JMX連接信息
5. 連接成功后,遠程JVM-Demo1的基本信息
6. Demo1的CPU癣猾、堆纷宇、類龙屉、線程的整體情況
7. Demo1的線程運行情況
8. Visual GC插件不工作

Visual GC插件不工作转捕,是因為此插件使用的協(xié)議是RMI五芝,因此需要使用下面的jstatd方式進行連接辕万。

使用JStatD連接到遠程JVM

JVM jstat Daemon:守護進程渐尿,一個RMI(Remote Method Invocation)服務器程序,用于監(jiān)控本地所有JVM從創(chuàng)建開始直到銷毀整個過程中的資源使用情況隘擎,同時提供接口給監(jiān)控工具(如這里的VisualVM)凉夯,讓工具能連接到本機所有的JVM。

啟動jstatd server application需要使用與啟動那些JVM相同的用戶休傍,或者root蹲姐。即當前用戶運行jstatd監(jiān)控到的是當前用戶運行的所有JVM柴墩。

由于jstatd server沒有提供任何對遠程client端的認證,客戶端程序獲取到本地當前用戶的所有JVM信息后可能存在安全隱患慰毅,所以jstatd要求啟動之前必須指定本地安全策略扎阶,否則jstatd進程無法啟動东臀,拋出如下錯誤:

Could not create remote object
access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses" "write")
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
    at java.security.AccessController.checkPermission(AccessController.java:884)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.System.setProperty(System.java:792)
    at sun.tools.jstatd.Jstatd.main(Jstatd.java:139)

為了解決以上錯誤惰赋,在本地(實際是需要被監(jiān)控的遠程主機,對應我們示例中的marslnx1v)創(chuàng)建一個安全策略文件轨奄,比如保存為/home/dereck/jstatd-all.policy拒炎,內(nèi)容如下:

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

然后通過如下命令可以成功啟動jstatd server

[dereck@marslnx1v ~] jstatd -J-Djava.security.policy=/home/dereck/jstatd-all.policy

-Joption

向通過jstatd命令啟動的JVM(Main class:sun.tools.jstatd.Jstatd)傳遞參數(shù)击你,比如-J-Xms48m指定了Jstatd這個JVM的初始堆內(nèi)存為48MB

此時在客戶端啟動JVisualVM,對應的遠程主機節(jié)點下會自動列出所有運行的JVM

遠程主機上的所有JVM
Visual VM插件正常顯示堆內(nèi)各區(qū)使用情況

JMX連接與JStatD連接方式的區(qū)別

  • JMX
    • 使用JMX需要遠程JVM在啟動的時候開啟遠程訪問支持,設定JMX端口等石景,示例參數(shù)如下
      java demo.Demo1 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=10011 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
      
    • 每一個JMX連接一個遠程JVM
  • JStatD
    • 使用jstatd連接方式時鸵钝,需要在遠程主機上創(chuàng)建安全策略文件然后啟動jstatd進程,并且此進程需要一直保持運行狀態(tài)
    • 客戶端可以看到遠程主機上當前用戶的所有JVM的信息变逃,即只要創(chuàng)建一個jstatd連接

參考

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末揽乱,一起剝皮案震驚了整個濱河市凰棉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陌粹,老刑警劉巖撒犀,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掏秩,居然都是意外死亡或舞,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門蒙幻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來映凳,“玉大人,你說我怎么就攤上這事邮破≌┩悖” “怎么了抒和?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵矫渔,是天一觀的道長。 經(jīng)常有香客問我摧莽,道長蚌斩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任范嘱,我火速辦了婚禮,結(jié)果婚禮上员魏,老公的妹妹穿的比我還像新娘丑蛤。我一直安慰自己,他們只是感情好撕阎,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布受裹。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪棉饶。 梳的紋絲不亂的頭發(fā)上厦章,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機與錄音照藻,去河邊找鬼袜啃。 笑死,一個胖子當著我的面吹牛幸缕,可吹牛的內(nèi)容都是我干的群发。 我是一名探鬼主播栋烤,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼租冠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了慈俯?” 一聲冷哼從身側(cè)響起栏尚,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤起愈,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后译仗,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抬虽,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年古劲,在試婚紗的時候發(fā)現(xiàn)自己被綠了斥赋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡产艾,死狀恐怖疤剑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闷堡,我是刑警寧澤隘膘,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站杠览,受9級特大地震影響弯菊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜踱阿,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一管钳、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧软舌,春花似錦才漆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽黎比。三九已至,卻和暖如春鸳玩,著一層夾襖步出監(jiān)牢的瞬間阅虫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工不跟, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留颓帝,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓躬拢,卻偏偏與公主長得像躲履,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子聊闯,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 本文參考 http://www.reibang.com/p/414647c1179e ;因為jmx配置都是按照下面...
    衛(wèi)漸行閱讀 1,257評論 0 0
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評論 6 342
  • 一工猜、基本操作 1.JConsole是什么 從Java 5開始引入了JConsole。JConsole是一個內(nèi)置Ja...
    藍慧云天閱讀 8,702評論 0 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理菱蔬,服務發(fā)現(xiàn)篷帅,斷路器,智...
    卡卡羅2017閱讀 134,599評論 18 139
  • 今天拴泌,這個姑娘熬了她人生的第二個通宵魏身。第一個是看倫敦亞運會,盡管她很清楚地記得當時自己困意連天蚪腐,蜷縮在掉色的舊沙發(fā)...
    奤瀅閱讀 274評論 0 0