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