溫馨提示×

溫馨提示×

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

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

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

發(fā)布時間:2022-03-17 15:50:48 來源:億速云 閱讀:192 作者:iii 欄目:大數(shù)據(jù)

這篇“虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些”文章吧。

·商業(yè)授權(quán)工具:主要是JMC(Java Mission Control)及它要使用到的JFR(Java FlightRecorder),JMC這個原本來自于JRockit的運(yùn)維監(jiān)控套件從JDK 7 Update 40開始就被集成到OracleJDK中,JDK 11之前都無須獨立下載,但是在商業(yè)環(huán)境中使用它則是要付費(fèi)的 [1] 。

jps:虛擬機(jī)進(jìn)程狀況工具

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

jstat:虛擬機(jī)統(tǒng)計信息監(jiān)視工具

jstat(JVM Statistics Monitoring Tool)是用于監(jiān)視虛擬機(jī)各種運(yùn)行狀態(tài)信息的命令行工具。它可以顯示本地或者遠(yuǎn)程 [1] 虛擬機(jī)進(jìn)程中的類加載、內(nèi)存、垃圾收集、即時編譯等運(yùn)行時數(shù)據(jù),在沒有GUI圖形界面、只提供了純文本控制臺環(huán)境的服務(wù)器上,它將是運(yùn)行期定位虛擬機(jī)性能問題的常用工具。

jstat [ option vmid [interval[s|ms] [count]] ]

參數(shù)interval和count代表查詢間隔和次數(shù),如果省略這2個參數(shù),說明只查詢一次。假設(shè)需要每250毫秒查詢一次進(jìn)程2764垃圾收集狀況,一共查詢20次,那命令應(yīng)當(dāng)是:

jstat -gc 2764 250 20       很有用

選項option代表用戶希望查詢的虛擬機(jī)信息,主要分為三類:類加載、垃圾收集、運(yùn)行期編譯狀況。詳細(xì)請參考表4-2中的描述。

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

jstat -gcutil 2764

S0 S1 E O P YGC YGCT FGC FGCT GCT

0.00 0.00 6.20 41.42 47.20 16 0.105 3 0.472 0.577

jstat -class 7216        //查看類加載時間

Loaded Bytes Unloaded Bytes Time

7902 9691.2 3 2.6 4.34

查詢結(jié)果表明:這臺服務(wù)器的新生代Eden區(qū)(E,表示Eden)使用了6.2%的空間,2個Survivor區(qū)(S0、S1,表示Survivor0、Survivor1)里面都是空的,老年代(O,表示Old)和永久代(P,表示Permanent)則分別使用了41.42%和47.20%的空間。程序運(yùn)行以來共發(fā)生Minor GC(YGC,表示YoungGC)16次,總耗時0.105秒;發(fā)生Full GC(FGC,表示Full GC)3次,總耗時(FGCT,表示Full GCTime)為0.472秒;所有GC總耗時(GCT,表示GC Time)為0.577秒。

jinfo:Java配置信息工具  不常用

jinfo(Configuration Info for Java)的作用是實時查看和調(diào)整虛擬機(jī)各項參數(shù)。使用jps命令的-v參數(shù)可以查看虛擬機(jī)啟動時顯式指定的參數(shù)列表,但如果想知道未被顯式指定的參數(shù)的系統(tǒng)默認(rèn)值,除了去找資料外,就只能使用jinfo的-flag選項進(jìn)行查詢了(如果只限于JDK 6或以上版本的話,使用java-XX:+PrintFlagsFinal查看參數(shù)默認(rèn)值也是一個很好的選擇)。jinfo還可以使用-sysprops選項把虛擬機(jī)進(jìn)程的System.getProperties()的內(nèi)容打印出來。這個命令在JDK 5時期已經(jīng)隨著Linux版的JDK發(fā)布,當(dāng)時只提供了信息查詢的功能,JDK 6之后,jinfo在Windows和Linux平臺都有提供,并且加入了在運(yùn)行期修改部分參數(shù)值的能力(可以使用-flag[+|-]name或者-flag name=value在運(yùn)行期修改一部分運(yùn)行期可寫的虛擬機(jī)參數(shù)值)。在JDK 6中,jinfo對于Windows平臺功能仍然有較大限制,只提供了最基本的-flag選項。

jinfo [ option ] pid

執(zhí)行樣例:查詢CMSInitiatingOccupancyFraction參數(shù)值

jinfo -flag CMSInitiatingOccupancyFraction 1444

-XX:CMSInitiatingOccupancyFraction=85

jinfo -flag SurvivorRatio 12844

-XX:SurvivorRatio=8

jinfo -sysprops 6952

使用-sysprops選項把虛擬機(jī)進(jìn)程的System.getProperties()的內(nèi)容打印出來

jmap:Java內(nèi)存映像工具

jmap(Memory Map for Java)命令用于生成堆轉(zhuǎn)儲快照(一般稱為heapdump或dump文件)。如果不使用jmap命令,要想獲取Java堆轉(zhuǎn)儲快照也還有一些比較“暴力”的手段:譬如在第2章中用過的-XX:+HeapDumpOnOutOfMemoryError參數(shù),可以讓虛擬機(jī)在內(nèi)存溢出異常出現(xiàn)之后自動生成堆轉(zhuǎn)儲快照文件,通過-XX:+HeapDumpOnCtrlBreak參數(shù)則可以使用[Ctrl]+[Break]鍵讓虛擬機(jī)生成堆轉(zhuǎn)儲快照文件,又或者在Linux系統(tǒng)下通過Kill-3命令發(fā)送進(jìn)程退出信號“恐嚇”一下虛擬機(jī),也能順利拿到堆轉(zhuǎn)儲快照。

jmap的作用并不僅僅是為了獲取堆轉(zhuǎn)儲快照,它還可以查詢finalize執(zhí)行隊列、Java堆和方法區(qū)的詳細(xì)信息,如空間使用率、當(dāng)前用的是哪種收集器等。

jmap [ option ] vmid

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

jmap -dump:format=b,file=eclipse.bin 3500

Dumping heap to C:\Users\IcyFenix\eclipse.bin ...

Heap dump file created

jhat:虛擬機(jī)堆轉(zhuǎn)儲快照分析工具

JDK提供jhat(JVM Heap Analysis Tool)命令與jmap搭配使用,來分析jmap生成的堆轉(zhuǎn)儲快照。jhat內(nèi)置了一個微型的HTTP/Web服務(wù)器,生成堆轉(zhuǎn)儲快照的分析結(jié)果后,可以在瀏覽器中查看。不過實事求是地說,在實際工作中,除非手上真的沒有別的工具可用,否則多數(shù)人是不會直接使用jhat命令來分析堆轉(zhuǎn)儲快照文件的。

一般不會在部署應(yīng)用程序的服務(wù)器上直接分析堆轉(zhuǎn)儲快照。

另外一個原因是jhat的分析功能相對來說比較簡陋,后文將會介紹到的VisualVM,以及專業(yè)用于分析堆轉(zhuǎn)儲快照文件的Eclipse Memory Analyzer、IBM HeapAnalyzer [2] 等工具,都能實現(xiàn)比jhat更強(qiáng)大專業(yè)的分析功能。

分析結(jié)果默認(rèn)以包為單位進(jìn)行分組顯示,分析內(nèi)存泄漏問題主要會使用到其中的“HeapHistogram”(與jmap-histo功能一樣)與OQL頁簽的功能,前者可以找到內(nèi)存中總?cè)萘孔畲蟮膶ο?,后者是?biāo)準(zhǔn)的對象查詢語言,使用類似SQL的語法對內(nèi)存中的對象進(jìn)行查詢統(tǒng)計。

jmap -dump:format=b,file=D:/dump.log 15220

jhat dump.log  通過localhsot:7000訪問

jstack:Java堆棧跟蹤工具

jstack(Stack Trace for Java)命令用于生成虛擬機(jī)當(dāng)前時刻的線程快照(一般稱為threaddump或者javacore文件)。線程快照就是當(dāng)前虛擬機(jī)內(nèi)每一條線程正在執(zhí)行的方法堆棧的集合,生成線程快照的目的通常是定位線程出現(xiàn)長時間停頓的原因,如線程間死鎖、死循環(huán)、請求外部資源導(dǎo)致的長時間掛起等,都是導(dǎo)致線程長時間停頓的常見原因。

jstack [ option ] vmid

jstack -l 15220

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

基礎(chǔ)工具總結(jié)

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

性能監(jiān)控和故障處理工具

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

可視化故障處理工具

VisualVM在JDK 6 Update 7中首次發(fā)布,直到JRockit Mission Control與OracleJDK的融合工作完成之前,它都曾是Oracle主力推動的多合一故障處理工具,現(xiàn)在它已經(jīng)從OracleJDK中分離出來, 成為一個獨立發(fā)展的開源項目 [2] 。VisualVM已不是JDK中的正式成員,但仍是可以免費(fèi)下載、使用的。

JHSDB:基于服務(wù)性代理的調(diào)試工具

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

在高版本的JDK中,這些工具大多已有了功能更為強(qiáng)大的替代品,譬如JCMD、JHSDB的命令行模式

jhsdb 在java8中不存在。

使用以下命令進(jìn)入JHSDB的圖形化模式,并使其附加進(jìn)程11180:

jhsdb hsdb --pid 11180

https://rednaxelafx.iteye.com/blog/1847971

·相同的程序在64位虛擬機(jī)中消耗的內(nèi)存一般比32位虛擬機(jī)要大,這是由于指針膨脹,以及數(shù)據(jù)類型對齊補(bǔ)白等因素導(dǎo)致的,可以開啟(默認(rèn)即開啟)壓縮指針功能來緩解。

·大量使用本地緩存(如大量使用HashMap作為K/V緩存)的應(yīng)用,在邏輯集群中會造成較大的內(nèi)存浪費(fèi),因為每個邏輯節(jié)點上都有一份緩存,這時候可以考慮把本地緩存改為集中式緩存。

執(zhí)行這個Shell腳本是通過Java的Runtime.getRuntime().exec()方法來調(diào)用的。這種調(diào)用方式可以達(dá)到執(zhí)行Shell腳本的目的,但是它在Java虛擬機(jī)中是非常消耗資源的操作,即使外部命令本身能很快執(zhí)行完畢,頻繁調(diào)用時創(chuàng)建進(jìn)程的開銷也會非??捎^。Java虛擬機(jī)執(zhí)行這個命令的過程是首先復(fù)制一個和當(dāng)前虛擬機(jī)擁有一樣環(huán)境變量的進(jìn)程,再用這個新的進(jìn)程去執(zhí)行外部命令,最后再退出這個進(jìn)程。如果頻繁執(zhí)行這個操作,系統(tǒng)的消耗必然會很大,而且不僅是處理器消耗,內(nèi)存負(fù)擔(dān)也很重。

考慮到實際情況,Eclipse使用者甚多,它的編譯代碼我們可以認(rèn)為是安全可靠的,可以不需要在加載的時候再進(jìn)行字節(jié)碼驗證, 因此通過參數(shù)-Xverify:none禁止掉字節(jié)碼驗證過程也可作為一項優(yōu)化措施。加入這個參數(shù)后,兩個版本的JDK類加載速度都有所提高,

Eclipse調(diào)優(yōu)

-vm

D:/_DevSpace/jdk1.6.0_21/bin/javaw.exe

-startup

plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar

--launcher.library

plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519

-product

org.eclipse.epp.package.jee.product

-showsplash

org.eclipse.platform

-vmargs

-Dcom.sun.management.jmxremote

-Dosgi.requiredJavaVersion=1.5

-Xverify:none

-Xmx512m

-Xms512m

-Xmn128m

-XX:PermSize=96m

-XX:MaxPermSize=96m

-XX:+DisableExplicitGC

-Xnoclassgc

-XX:+UseParNewGC

-XX:+UseConcMarkSweepGC

-XX:CMSInitiatingOccupancyFraction=85

虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些

以上就是關(guān)于“虛擬機(jī)性能監(jiān)控和故障處理的工具有哪些”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

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

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

AI