Linux服務(wù)器性能的日常命令和工具大全
概述
通過(guò)使用以下命令和工具,可以在1分鐘內(nèi)對(duì)系統(tǒng)資源使用情況有個(gè)大致的了解
其中一些命令需要安裝sysstat包,有一些由procps包提供。這些命令的輸出,有助于快速定位性能瓶頸,檢查出所有資源(CPU、內(nèi)存、磁盤IO等)的利用率(utilization)、飽和度(saturation)和錯(cuò)誤(error)度量,也就是所謂的USE方法
下面我們來(lái)逐一介紹下這些命令和工具,有關(guān)這些命令和工具更多的參數(shù)和說(shuō)明,請(qǐng)參照手冊(cè)
1.uptime
$uptime
23:51:26up21:31,1user,loadaverage:30.02,26.43,19.02
這個(gè)命令可以快速查看機(jī)器的負(fù)載情況。在Linux系統(tǒng)中,這些數(shù)據(jù)表示等待CPU資源的進(jìn)程和阻塞在不可中斷IO進(jìn)程(進(jìn)程狀態(tài)為D)的數(shù)量。這些數(shù)據(jù)可以讓我們對(duì)系統(tǒng)資源使用有一個(gè)宏觀的了解。
命令的輸出分別表示1分鐘、5分鐘、15分鐘的平均負(fù)載情況。通過(guò)這三個(gè)數(shù)據(jù),可以了解服務(wù)器負(fù)載是在趨于緊張還是區(qū)域緩解。如果1分鐘平均負(fù)載很高,而15分鐘平均負(fù)載很低,說(shuō)明服務(wù)器正在命令高負(fù)載情況,需要進(jìn)一步排查CPU資源都消耗在了哪里。反之,如果15分鐘平均負(fù)載很高,1分鐘平均負(fù)載較低,則有可能是CPU資源緊張時(shí)刻已經(jīng)過(guò)去。
上面例子中的輸出,可以看見最近1分鐘的平均負(fù)載非常高,且遠(yuǎn)高于最近15分鐘負(fù)載,因此我們需要繼續(xù)排查當(dāng)前系統(tǒng)中有什么進(jìn)程消耗了大量的資源?梢酝ㄟ^(guò)下文將會(huì)介紹的vmstat、mpstat等命令進(jìn)一步排查。
2.dmesg | tail
$dmesg|tail
[1880957.563150]perlinvokedoom-killer:gfp_mask=0x280da,order=0,oom_score_adj=0
[...]
[1880957.563400]Outofmemory:Killprocess18694(perl)score246orsacrificechild
[1880957.563408]Killedprocess18694(perl)total-vm:1972392kB,anon-rss:1953348kB,file-rss:0kB
[2320864.954447]TCP:PossibleSYNfloodingonport7001.Droppingrequest.CheckSNMPcounters.
該命令會(huì)輸出系統(tǒng)日志的最后10行。示例中的輸出,可以看見一次內(nèi)核的
oom kill和一次TCP丟包。這些日志可以幫助排查性能問(wèn)題。千萬(wàn)不要忘了這一步。
3.vmstat— 虛擬內(nèi)存統(tǒng)計(jì)
vmstat命令是用于顯示虛擬內(nèi)存、內(nèi)核線程、磁盤、系統(tǒng)進(jìn)程、I/O模塊、中斷、CPU活躍狀態(tài)等更多信息
在默認(rèn)的情況下,Linux系統(tǒng)是沒有vmstat這個(gè)命令的,如果你要使用它
必須安裝一個(gè)包名叫sysstat的程序包。命令格式常用用法如下:
$vmstat1
procs---------memory-------------swap-------io-----system--------cpu-----
rbswpdfreebuffcachesisobiboincsussyidwast
3400200889792737085918280005610961300
320020088992073708591860000592132844282981100
320020089011273708591860000095012154991000
32002008895687371259185600048119002459990000