溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行JVM監(jiān)控在本地和遠(yuǎn)程的應(yīng)用

發(fā)布時(shí)間:2021-10-23 16:45:59 來源:億速云 閱讀:189 作者:柒染 欄目:編程語言

本篇文章為大家展示了如何進(jìn)行JVM監(jiān)控在本地和遠(yuǎn)程的應(yīng)用,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

JVM監(jiān)控的概念和應(yīng)用主要包括本地JVM監(jiān)控和JVM監(jiān)控遠(yuǎn)程進(jìn)程兩大部分內(nèi)容,經(jīng)過簡單試用,這些命令+圖形工具 已經(jīng)足夠強(qiáng)大, 能滿足一般的監(jiān)控要求了,如對(duì)各類內(nèi)存、垃圾回收、線程狀態(tài)的監(jiān)控。

JVM監(jiān)控

經(jīng)過查找發(fā)現(xiàn)其實(shí)sun的jdk中就帶有這類工具,從jdk5開始命令行有了jstat,jps,jstatd,圖形監(jiān)控有了jconsole;而到了jdk6,命令有了jmap, jinfo, jstack,圖形有了jvisualvm。經(jīng)過簡單試用,這些命令+圖形工具 已經(jīng)足夠強(qiáng)大, 能滿足一般的監(jiān)控要求了,如對(duì)各類內(nèi)存、垃圾回收、線程狀態(tài)的監(jiān)控。

圖形:visualvm

如果是本地JVM監(jiān)控,則可以直接在本地的窗口中看到j(luò)ava應(yīng)用程序。雙擊點(diǎn)開即可打開JVM監(jiān)控窗口。

Remote它可以用來操作遠(yuǎn)程機(jī)器。遠(yuǎn)程機(jī)器需要啟動(dòng)一個(gè)daemon:jstatd

1、遠(yuǎn)程機(jī)器啟動(dòng)jstatd

1.1、首先需要準(zhǔn)備一個(gè)java.policy文件,保存到如/home/admin/jstatd.java.policy

grantcodebase"file:${java.home}/../lib/tools.jar"{   permissionjava.security.AllPermission;   };

1.2、啟動(dòng)jstatd

jstatd-J-Djava.security.policy=/home/admin/jstatd.java.policy-J-Djava.rmi.server.logCalls=true

1.3、同時(shí)需要執(zhí)行一個(gè)命令看看(linux需要)

Hostname–i

如果顯示是127.0.0.1,則需要修改/etc/hosts文件,去掉對(duì)本機(jī)名的配置,讓本機(jī)名解析到它的IP地址,如10.20.131.214

2、連接遠(yuǎn)程機(jī)器

如何進(jìn)行JVM監(jiān)控在本地和遠(yuǎn)程的應(yīng)用

3、點(diǎn)擊OK,看到會(huì)連接到遠(yuǎn)程機(jī)器,并顯示出它下面的java進(jìn)程。

如何進(jìn)行JVM監(jiān)控在本地和遠(yuǎn)程的應(yīng)用

jconsole

JVM監(jiān)控本地應(yīng)用

首先就是啟動(dòng)您要JVM監(jiān)控的應(yīng)用,例如我用JDK1.6來啟動(dòng)了Tomcat,或者Eclipse也可以,可以在任務(wù)管理器(Ctrl+Alt+Del可以調(diào)出來,或者在任務(wù)欄點(diǎn)擊右鍵)里看到進(jìn)程ID,例如我這里是6132.

接著在JDK安裝目錄中(<JDK_HOME>/bin/jconsole.exe)啟動(dòng)jconsole.exe(雙擊或者在cmd里面敲入jconsole),主界面會(huì)提示您建立一個(gè)新連接:

如何進(jìn)行JVM監(jiān)控在本地和遠(yuǎn)程的應(yīng)用

可以看到進(jìn)程ID,選擇它,然后點(diǎn)擊"連接".這些ID必須都是用JDK1.6的java.exe啟動(dòng)的,否則在列表里看不到.

如何進(jìn)行JVM監(jiān)控在本地和遠(yuǎn)程的應(yīng)用

JConsle能JVM監(jiān)控內(nèi)存,線程,類的數(shù)目和CPU然后點(diǎn)擊各個(gè)Tab可以看到詳細(xì)的輸出,詳細(xì)的輸出包括:

內(nèi)存:堆/非堆,峰值,內(nèi)存的各個(gè)部分,例如Perm,Eden等的大小曲線圖.

線程:峰值,所有線程的列表,堆棧跟蹤(哪個(gè)對(duì)象中的線程)等.還可以強(qiáng)制執(zhí)行GC.

類:峰值,類總數(shù)曲線圖.

MBean:一些JVM參數(shù)的詳細(xì)MBean信息.

JVM監(jiān)控遠(yuǎn)程進(jìn)程

首先需要在運(yùn)行的應(yīng)用上啟用遠(yuǎn)程管理,參數(shù)如下(簡單期間就不加用戶驗(yàn)證了):

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

然后連接的時(shí)候選擇遠(yuǎn)程進(jìn)程,地址輸入:localhost:1090

即可.當(dāng)然在別的電腦上(一般是局域網(wǎng))可以輸入那個(gè)電腦的IP.

綜述:使用JConsole可以簡單的JVM監(jiān)控Server狀態(tài),但是本身要占一定的資源,不過JVM自帶的JVM監(jiān)控,理論上講應(yīng)該是占資源很小很小的,可以用它來方便的了解Web服務(wù)器應(yīng)用進(jìn)程的狀態(tài).如果要調(diào)優(yōu)應(yīng)用,還是使用JProfiler等工具更好一些,當(dāng)然它們占的資源也更大.

上述內(nèi)容就是如何進(jìn)行JVM監(jiān)控在本地和遠(yuǎn)程的應(yīng)用,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

jvm
AI