概述
簡(jiǎn)單通過(guò)查詢服務(wù)器負(fù)載、內(nèi)存、CPU、IO等指標(biāo)進(jìn)行排查問(wèn)題
相關(guān)命令
- uptime
- pidstat
- ps
- free
- top
- dmesg
- tail
指標(biāo)
uptime

命令的輸出分別表示 1 分鐘、5 分鐘、15 分鐘的平均負(fù)載情況.根據(jù)結(jié)果需要繼續(xù)排查有什么進(jìn)程消耗了大量的資源
pidstat

命令輸出進(jìn)程的 CPU 占用率,該命令會(huì)持續(xù)輸出,并且不會(huì)覆蓋之前的數(shù)據(jù),可以方便觀察系統(tǒng)動(dòng)態(tài)。如上的輸出,可以看見(jiàn)兩個(gè) JAVA 進(jìn)程占用了將近 1600% 的 CPU 時(shí)間,既消耗了大約 16 個(gè) CPU 核心的運(yùn)算資源
ps
查找特定進(jìn)程 命令:ps -ef|grep java

查到包含java的進(jìn)程對(duì)應(yīng)的應(yīng)用程序,以及PID等信息。
free

free 命令可以查看系統(tǒng)內(nèi)存的使用情況,-m 參數(shù)表示按照兆字節(jié)展示。最后兩列分別表示用于 IO 緩存的內(nèi)存數(shù),和用于文件系統(tǒng)頁(yè)緩存的內(nèi)存數(shù)。需要注意的是,第二行 -/+ buffers/cache,看上去緩存占用了大量?jī)?nèi)存空間。這是 Linux 系統(tǒng)的內(nèi)存使用策略,盡可能的利用內(nèi)存,如果應(yīng)用程序需要內(nèi)存,這部分內(nèi)存會(huì)立即被回收并分配給應(yīng)用程序。因此,這部分內(nèi)存一般也被當(dāng)成是可用內(nèi)存。
top

top 命令包含了前面好幾個(gè)命令的檢查的內(nèi)容。比如系統(tǒng)負(fù)載情況(uptime)、系統(tǒng)內(nèi)存使用情況(free)、系統(tǒng) CPU 使用情況(vmstat)等。因此通過(guò)這個(gè)命令,可以相對(duì)全面的查看系統(tǒng)負(fù)載的來(lái)源。同時(shí),top 命令支持排序,可以按照不同的列排序,方便查找出諸如內(nèi)存占用最多的進(jìn)程、CPU 占用率最高的進(jìn)程等。
vmstat

每行會(huì)輸出一些系統(tǒng)核心指標(biāo),這些指標(biāo)可以讓我們更詳細(xì)的了解系統(tǒng)狀態(tài)。后面跟的參數(shù) 1,表示每秒輸出一次統(tǒng)計(jì)信息,表頭提示了每一列的含義,這幾介紹一些和性能調(diào)優(yōu)相關(guān)的列:
- r:等待在 CPU 資源的進(jìn)程數(shù)。這個(gè)數(shù)據(jù)比平均負(fù)載更加能夠體現(xiàn) CPU 負(fù)載情況,數(shù)據(jù)中不包含等待 IO 的進(jìn)程。如果這個(gè)數(shù)值大于機(jī)器 CPU 核數(shù),那么機(jī)器的 CPU 資源已經(jīng)飽和。
- free:系統(tǒng)可用內(nèi)存數(shù)(以千字節(jié)為單位),如果剩余內(nèi)存不足,也會(huì)導(dǎo)致系統(tǒng)性能問(wèn)題。下文介紹到的 free 命令,可以更詳細(xì)的了解系統(tǒng)內(nèi)存的使用情況。
- si, so:交換區(qū)寫(xiě)入和讀取的數(shù)量。如果這個(gè)數(shù)據(jù)不為 0,說(shuō)明系統(tǒng)已經(jīng)在使用交換區(qū)(swap),機(jī)器物理內(nèi)存已經(jīng)不足。
- us, sy, id, wa, st:這些都代表了 CPU 時(shí)間的消耗,它們分別表示用戶時(shí)間(user)、系統(tǒng)(內(nèi)核)時(shí)間(sys)、空閑時(shí)間(idle)、IO 等待時(shí)間(wait)和被偷走的時(shí)間(stolen,一般被其他虛擬機(jī)消耗)
mpstat -P ALL 1

該命令可以顯示每個(gè) CPU 的占用情況,如果有一個(gè) CPU 占用率特別高,那么有可能是一個(gè)單線程應(yīng)用程序引起的
系統(tǒng)日志
dmesg | tail

該命令會(huì)輸出系統(tǒng)日志的最后 10 行(tail -100則代表最后100行)。示例中的輸出,可以看見(jiàn)一次內(nèi)核的 oom kill 和一次 TCP 丟包。這些日志可以幫助排查性能問(wèn)題。
參考:https://www.infoq.cn/article/2015%2F12%2Flinux-performance