Ubuntu性能調(diào)優(yōu):故障排查
譯文【51CTO精選譯文】好了,鑒于我們的Linux發(fā)行版現(xiàn)已安裝,許多方面看起來(lái)似乎根本不"好"。今天我們將介紹為安裝的Linux排查性能故障的方法。雖然今天的這篇文章明顯傾向于Ubuntu,但我們探討的幾乎一切內(nèi)容都同樣適用于每個(gè)Linux發(fā)行版。要是哪些命令是專門針對(duì)特定的發(fā)行版,我會(huì)特別指出(要是你注意到什么,歡迎在末尾處留言,我會(huì)酌情補(bǔ)充上去)。
推薦專題:Ubuntu桌面生存指南
我是不是忘記了什么?
你已明明花了一些錢用于硬件配置,購(gòu)買了另外那8GB的內(nèi)存,可為什么安裝的發(fā)行版運(yùn)行起來(lái)速度還是那么慢?想確信你的系統(tǒng)看到已安裝的所有內(nèi)存,最快捷的辦法就是使用'free'這個(gè)命令。默認(rèn)情況下,這個(gè)命令會(huì)列出它"看到"的你系統(tǒng)上安裝的所有內(nèi)存(包括物理內(nèi)存和交換內(nèi)存)。下面是查看你所尋找的內(nèi)存的最簡(jiǎn)便方法:
free -h --si
會(huì)顯示類似這樣的結(jié)果:
我們這個(gè)命令后面的兩個(gè)參數(shù)'-h -si'告訴它以"人可讀"的格式來(lái)顯示輸出(自動(dòng)選擇最合適的類型:兆字節(jié)、吉字節(jié)和太字節(jié)),并使用兆字節(jié)/吉字節(jié)/太字節(jié)的十進(jìn)制與二進(jìn)制定義。如果你在這里看到的內(nèi)容與你知道電腦上實(shí)際安裝的情況不一致,那么有幾個(gè)辦法可以嘗試一下。首先,如果你安裝了4GB以上的內(nèi)存,確信已安裝了64位版本的發(fā)行版,不然你最多只能看到4GB的存儲(chǔ)空間。(如果你安裝了32位版本,又需要4GB以上的內(nèi)存,可以安裝一個(gè)名為"PAE"的特殊內(nèi)核,PAE代表"物理地址擴(kuò)展"--它讓你的系統(tǒng)可以在32位操作系統(tǒng)上看到4GB以上的內(nèi)存。)
如果你將內(nèi)核更新到PAE(32位)或者重新安裝了發(fā)行版(64位)后,你的系統(tǒng)還是看不到全部數(shù)量的內(nèi)存,那么你就應(yīng)該關(guān)閉系統(tǒng),重新插拔一下內(nèi)存。你也可以撥出所有內(nèi)存,就只剩一條內(nèi)存芯片,通過(guò)逐個(gè)排除的方法,確定是否存在內(nèi)存芯片硬件問(wèn)題。
到底是怎么個(gè)狀況?
想確定新安裝的系統(tǒng)上到底是怎么個(gè)狀況,一種功能更強(qiáng)大的工具是'atsar'(注意:另外大多數(shù)發(fā)行版有同樣的工具,但是名為'sar',就像原始的伯克利Unix工具)。該應(yīng)用程序可以為你提供諸多方面的統(tǒng)計(jì)數(shù)字,包括內(nèi)存、處理器、負(fù)載、網(wǎng)絡(luò)、線程、插座、錯(cuò)誤和交換等方面。想了解"全面"的狀況,最快捷的辦法就是使用下列命令:
atsar -A
這會(huì)給出你系統(tǒng)上幾乎任何方面的隨意讀出結(jié)果,就像這樣(上面的屏幕截圖只是一部分,完整的讀出結(jié)果要長(zhǎng)得多)。
'-A'參數(shù)意味著"給我顯示可能顯示的一切信息",是獲得簡(jiǎn)要的完整系統(tǒng)視圖的好方法,以便查看哪里出了異常(即你是否看到頻繁地交換?為何MySQL占用該處理器的全部資源?為何有那么多的進(jìn)程用于Apache?我的系統(tǒng)負(fù)載有多大?)這可以幫助你重點(diǎn)關(guān)注需要更多一點(diǎn)信息的某個(gè)方面。
問(wèn)題來(lái)自里面還是外面?
我們現(xiàn)在通過(guò)上面的'atsar'報(bào)告表明了當(dāng)前狀況。系統(tǒng)上有許多的輸入輸出等待(IOWait),那么它們又都來(lái)自哪里呢?嗯,輸入輸出可能與磁盤有關(guān)(讀取/寫入),或者與網(wǎng)絡(luò)有關(guān)(發(fā)送/接收)。我們可以使用'iostat',深入分析統(tǒng)計(jì)數(shù)字,如下所示:
iostat -h -p ALL
顯示下列長(zhǎng)長(zhǎng)的輸出
顯示下列長(zhǎng)長(zhǎng)的輸出
這會(huì)以人可讀的格式(再次使用了'-h'參數(shù))顯示所有的網(wǎng)絡(luò)、內(nèi)存和磁盤設(shè)備(包括掛載的Samba或NFS設(shè)備,如果你有這些設(shè)備)及其事務(wù)、每秒讀取/寫入。如果你想看到在一段時(shí)間內(nèi)不斷提供的這種信息(或者更實(shí)用的是,把這些信息輸出到某個(gè)文件),不妨在末尾添加一個(gè)整數(shù)(比如說(shuō),那樣'iostat -h -t -p ALL 5 > results.txt'就會(huì)每隔5秒生成這份報(bào)告,每個(gè)段落有一個(gè)起始時(shí)間,并保存到文件--注意這個(gè)操作會(huì)不斷持續(xù),直到你摁住 CTRL-C組合鍵中斷這個(gè)過(guò)程,或者如果你在后臺(tái)運(yùn)行,直到你終止該過(guò)程)。
眼下有了內(nèi)存、處理器、內(nèi)存、網(wǎng)絡(luò)、磁盤和輸入輸出方面的統(tǒng)計(jì)數(shù)字,你對(duì)系統(tǒng)當(dāng)前的狀況多少應(yīng)該有所了解。別忘了使用我們的老朋友:'top'命令,看看到底哪些進(jìn)程在運(yùn)行,這會(huì)幫助你把當(dāng)前運(yùn)行的進(jìn)程與你在我們的演練期間發(fā)現(xiàn)的那種類型的性能度量標(biāo)準(zhǔn)關(guān)聯(lián)起來(lái)。
輕松搞定鎖定問(wèn)題
有時(shí)候,尤其是在排查故障時(shí),你會(huì)發(fā)現(xiàn)自己采取的某個(gè)操作使得情況反而更糟糕了(比如終止了不該終止的進(jìn)程,結(jié)果鎖定了XWindows,等等)。你似乎根本什么都干不了。如果是這樣,你總是可以摁住CTRL-ALT-F1組合鍵,看看是否能得到明文外殼。如果能,你只要重啟系統(tǒng),再試一下('sudo reboot')。有時(shí)候,連這一招都不管用。
這里有一招可以讓你無(wú)須關(guān)閉系統(tǒng)電源、希望EXT3/4中的文件系統(tǒng)日志可以避免文件受損:REISUB。這是冷啟動(dòng)之外最安全的辦法,而且?guī)缀蹩偸菍以嚥凰?,不管你的系統(tǒng)怎樣被"鎖定"了。你可以執(zhí)行這個(gè)神奇的操作,如下所示:
摁住ALT和SYSREQ(PRINT SC)鍵的同時(shí),輸入R E I S U B
現(xiàn)在,有幾個(gè)方面需要考慮。首先,你的鍵盤得有SYSREQ(PRINT SC)這個(gè)鍵,一些比較現(xiàn)代或比較緊湊的鍵盤沒有這個(gè)鍵。要是你的鍵盤沒有這個(gè)鍵,這一招顯然不管用。其次,那些字母輸入時(shí)不要太快。因?yàn)樗鼈兏髯詧?zhí)行一個(gè)操作,每個(gè)字母之間***間隔五秒左右,那樣它們就能完成各自的工作。具體來(lái)說(shuō),這幾個(gè)字母分別代表:
R = 切換到XLATE
E= 終止向所有運(yùn)行中的進(jìn)程(INIT除外)發(fā)信號(hào)
I= 終止init除外的所有進(jìn)程(針對(duì)沒有響應(yīng)終止命令的進(jìn)程)
S= 同步所有文件系統(tǒng)
U= 重新掛載文件系統(tǒng),只讀格式
B= 重啟系統(tǒng)
這個(gè)小技巧幾乎被人們所遺忘。我覺得要記住這個(gè)順序的最簡(jiǎn)便辦法就是記住這個(gè)短語(yǔ)Reboot Even If System Utterly Broken(即使系統(tǒng)完全壞掉,也可以重啟)。我聽過(guò)別人倒過(guò)來(lái)識(shí)記,稱之為"BUSIER",但相對(duì)較短的這個(gè)BUSIER對(duì)我來(lái)說(shuō)似乎太容易了。
結(jié)束語(yǔ)
與互聯(lián)網(wǎng)時(shí)代的許多方面一樣,排查問(wèn)題的能力儼然成了一門失傳的技藝。就像本文中一樣,有好多地方可以查詢你所要找的答案。不過(guò),僅僅知道幾個(gè)基本的命令和高效排查故障的順序,就可以替你節(jié)省時(shí)間,完全可能讓你邁上一個(gè)臺(tái)階。
原文鏈接:http://pinehead.tv/linux/ubuntu-performance-troubleshooting/