Linux 命令檢查服務(wù)器性能

概述

簡(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

image.png

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

pidstat

image.png

命令輸出進(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


image.png

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

free

image.png

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

image.png

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

image.png

每行會(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

image.png

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

系統(tǒng)日志

dmesg | tail

image.png

該命令會(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容