十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇內(nèi)容介紹了“有哪些Java性能常見命令”的有關(guān)知識(shí),在實(shí)際案例的操作過程中,不少人都會(huì)遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
十余年的靈臺(tái)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營(yíng)銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整靈臺(tái)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“靈臺(tái)網(wǎng)站設(shè)計(jì)”,“靈臺(tái)網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
性能優(yōu)化一向是后端服務(wù)優(yōu)化的重點(diǎn),但是線上性能故障問題不是經(jīng)常出現(xiàn),或者受限于業(yè)務(wù)產(chǎn)品,根本就沒辦法出現(xiàn)性能問題,包括筆者自己遇到的性能問題也不多,所以為了提前儲(chǔ)備知識(shí),當(dāng)出現(xiàn)問題的時(shí)候不會(huì)手忙腳亂。
既然是定位問題,肯定是需要借助工具,我們先了解下需要哪些工具可以幫忙定位問題。
top命令
top命令是我們最常用的Linux命令之一,它可以實(shí)時(shí)的顯示當(dāng)前正在執(zhí)行的進(jìn)程的CPU使用率,內(nèi)存使用率等系統(tǒng)信息。top -Hp pid 可以查看線程的系統(tǒng)資源使用情況。
vmstat命令
vmstat是一個(gè)指定周期和采集次數(shù)的虛擬內(nèi)存檢測(cè)工具,可以統(tǒng)計(jì)內(nèi)存,CPU,swap的使用情況,它還有一個(gè)重要的常用功能,用來觀察進(jìn)程的上下文切換。字段說明如下:
r: 運(yùn)行隊(duì)列中進(jìn)程數(shù)量(當(dāng)數(shù)量大于CPU核數(shù)表示有阻塞的線程)
b: 等待IO的進(jìn)程數(shù)量
swpd: 使用虛擬內(nèi)存大小
free: 空閑物理內(nèi)存大小
buff: 用作緩沖的內(nèi)存大小(內(nèi)存和硬盤的緩沖區(qū))
cache: 用作緩存的內(nèi)存大小(CPU和內(nèi)存之間的緩沖區(qū))
si: 每秒從交換區(qū)寫到內(nèi)存的大小,由磁盤調(diào)入內(nèi)存
so: 每秒寫入交換區(qū)的內(nèi)存大小,由內(nèi)存調(diào)入磁盤
bi: 每秒讀取的塊數(shù)
bo: 每秒寫入的塊數(shù)
in: 每秒中斷數(shù),包括時(shí)鐘中斷。
cs: 每秒上下文切換數(shù)。
us: 用戶進(jìn)程執(zhí)行時(shí)間百分比(user time)
sy: 內(nèi)核系統(tǒng)進(jìn)程執(zhí)行時(shí)間百分比(system time)
wa: IO等待時(shí)間百分比
id: 空閑時(shí)間百分比
pidstat命令
pidstat 是 Sysstat 中的一個(gè)組件,也是一款功能強(qiáng)大的性能監(jiān)測(cè)工具,top 和 vmstat 兩個(gè)命令都是監(jiān)測(cè)進(jìn)程的內(nèi)存、CPU 以及 I/O 使用情況,而 pidstat 命令可以檢測(cè)到線程級(jí)別的。pidstat命令線程切換字段說明如下:
UID :被監(jiān)控任務(wù)的真實(shí)用戶ID。
TGID :線程組ID。
TID:線程ID。
cswch/s:主動(dòng)切換上下文次數(shù),這里是因?yàn)橘Y源阻塞而切換線程,比如鎖等待等情況。
nvcswch/s:被動(dòng)切換上下文次數(shù),這里指CPU調(diào)度切換了線程。
jstack命令
jstack是JDK工具命令,它是一種線程堆棧分析工具,最常用的功能就是使用 jstack pid 命令查看線程的堆棧信息,也經(jīng)常用來排除死鎖情況。
jstat 命令
它可以檢測(cè)Java程序運(yùn)行的實(shí)時(shí)情況,包括堆內(nèi)存信息和垃圾回收信息,我們常常用來查看程序垃圾回收情況。常用的命令是jstat -gc pid。信息字段說明如下:
S0C:年輕代中 To Survivor 的容量(單位 KB);
S1C:年輕代中 From Survivor 的容量(單位 KB);
S0U:年輕代中 To Survivor 目前已使用空間(單位 KB);
S1U:年輕代中 From Survivor 目前已使用空間(單位 KB);
EC:年輕代中 Eden 的容量(單位 KB);
EU:年輕代中 Eden 目前已使用空間(單位 KB);
OC:老年代的容量(單位 KB);
OU:老年代目前已使用空間(單位 KB);
MC:元空間的容量(單位 KB);
MU:元空間目前已使用空間(單位 KB);
YGC:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中 gc 次數(shù);
YGCT:從應(yīng)用程序啟動(dòng)到采樣時(shí)年輕代中 gc 所用時(shí)間 (s);
FGC:從應(yīng)用程序啟動(dòng)到采樣時(shí) 老年代(Full Gc)gc 次數(shù);
FGCT:從應(yīng)用程序啟動(dòng)到采樣時(shí) 老年代代(Full Gc)gc 所用時(shí)間 (s);
GCT:從應(yīng)用程序啟動(dòng)到采樣時(shí) gc 用的總時(shí)間 (s)。
jmap命令
jmap也是JDK工具命令,他可以查看堆內(nèi)存的初始化信息以及堆內(nèi)存的使用情況,還可以生成dump文件來進(jìn)行詳細(xì)分析。查看堆內(nèi)存情況命令jmap -heap pid。
mat內(nèi)存工具
MAT(Memory Analyzer Tool)工具是eclipse的一個(gè)插件(MAT也可以單獨(dú)使用),它分析大內(nèi)存的dump文件時(shí),可以非常直觀的看到各個(gè)對(duì)象在堆空間中所占用的內(nèi)存大小、類實(shí)例數(shù)量、對(duì)象引用關(guān)系、利用OQL對(duì)象查詢,以及可以很方便的找出對(duì)象GC Roots的相關(guān)信息。
idea中也有這么一個(gè)插件,就是JProfiler。
“有哪些Java性能常見命令”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!