解密“top”命令
當對服務(wù)器的性能好奇時,我第一個想到的是"top"命令。top不是最好的,它不是一個長期的快照,但是它提供了服務(wù)器的一個不錯的時間點快照,并且試著提供了告訴"現(xiàn)在在發(fā)生什么?"。不幸地,如果你沒有深入了解不同顯示域的意義,top的輸出很容易被誤解。
我不會完整解讀top命令的man page,當你和時間和意愿時,它一直在那等著你。我想要做的是指出一些我如何得到系統(tǒng)的快速概況的幾個要點,并希望得到我接下來該怎么做的指示。top是我在故障排除時的第一站,但這很少會是我唯一的一站。
top命令我第一個看的是平均負載(load average),它在右上角的屏幕上。平均負載的計算是基于統(tǒng)計搜集到的數(shù)量,但是通常可以認為是CPU被請求工作的數(shù)量。如果你的機器有一個單核CPU,那么平均負載是1就意味著機器滿載的,并且有足夠的能力在采樣時間內(nèi)完成任務(wù)。同樣地,如果平均負載是2,那對單核的CPU是超載的,并需要2個可用內(nèi)核才能在同樣的采樣時間內(nèi)完成的要求的任務(wù)。隨著8、16、32核的發(fā)售,我會在判斷平均負載的時候就要注意一下。比如我需要去檢測時,我會在top里按了數(shù)字"1",這會列出所有CPU核列表,這樣我就可以得到一個快速計數(shù)用于比較負載。
我檢查的第二項是上面列出來的內(nèi)容的第9列,標記著"%CPU"那個。對這一列的解釋是很模糊的:
任務(wù)所分享的上次屏幕刷新后的CPU運行時間,以全部的CPU時間百分比表示。在一個真正的SMP(多處理器)環(huán)境中,如果'Irix mode'是關(guān)閉的,top會在'Solaris mode'下運行,這里一個任務(wù)的cpu使用率將除以全部的CPU數(shù)量。你可以用'I'(大寫字母I)這個交互命令觸發(fā)Irix或Solaris模式。 |
一點也不清楚,是么?這里要記住的主要意思是,如果單個進程由于某個原因或者其他因素占用率升高,那么他很有可能會以%CPU很高的數(shù)字顯示在top的第一行。
我下一個注意到的區(qū)域是"Cpu(s):"這一行,在頭部信息的中間。特別地,我對%us、sy%、%id、和%wa感興趣,它們分別是用戶進程、系統(tǒng)進程、空閑時間和CPU用于等待I/O流執(zhí)行的時間比例。這個百分比應(yīng)該接近于0,高于5%時需要密切關(guān)注。
最后,我想要看看系統(tǒng)up時間,這顯示在左上角。如果我對一臺服務(wù)器有疑問,并且這臺服務(wù)器最近重啟過,這里可能會發(fā)現(xiàn)一些什么,或許是一個守護進程沒有啟動。
這些檢查只需要幾秒。如果我只是觀察,我可能讓top運行幾分鐘并觀察進程、CPU和負載,但是通常地我很快地進入和退出top。top是給你一個系統(tǒng)健康概況的那些奇妙系統(tǒng)管理員工具之一,并允許你快速診斷潛在的問題。