歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu性能調優:故障排查

Ubuntu性能調優:故障排查

日期:2017/2/27 16:01:34   编辑:Linux教程
好了,鑒於我們的Linux發行版現已安裝,許多方面看起來似乎根本不"好"。今天我們將介紹為安裝的Linux排查性能故障的方法。雖然今天的這篇文章明顯傾向於Ubuntu,但我們探討的幾乎一切內容都同樣適用於每個Linux發行版。要是哪些命令是專門針對特定的發行版,我會特別指出(要是你注意到什麼,歡迎在末尾處留言,我會酌情補充上去)。

我是不是忘記了什麼?

你已明明花了一些錢用於硬件配置,購買了另外那8GB的內存,可為什麼安裝的發行版運行起來速度還是那麼慢?想確信你的系統看到已安裝的所有內存,最快捷的辦法就是使用'free'這個命令。默認情況下,這個命令會列出它"看到"的你系統上安裝的所有內存(包括物理內存和交換內存)。下面是查看你所尋找的內存的最簡便方法:
free -h --si
會顯示類似這樣的結果:

我們這個命令後面的兩個參數'-h -si'告訴它以"人可讀"的格式來顯示輸出(自動選擇最合適的類型:兆字節、吉字節和太字節),並使用兆字節/吉字節/太字節的十進制與二進制定義。如果你在這裡看到的內容與你知道電腦上實際安裝的情況不一致,那麼有幾個辦法可以嘗試一下。首先,如果你安裝了4GB以上的內存,確信已安裝了64位版本的發行版,不然你最多只能看到4GB的存儲空間。(如果你安裝了32位版本,又需要4GB以上的內存,可以安裝一個名為"PAE"的特殊內核,PAE代表"物理地址擴展"--它讓你的系統可以在32位操作系統上看到4GB以上的內存。)

如果你將內核更新到PAE(32位)或者重新安裝了發行版(64位)後,你的系統還是看不到全部數量的內存,那麼你就應該關閉系統,重新插拔一下內存。你也可以撥出所有內存,就只剩一條內存芯片,通過逐個排除的方法,確定是否存在內存芯片硬件問題。

到底是怎麼個狀況?

想確定新安裝的系統上到底是怎麼個狀況,一種功能更強大的工具是'atsar'(注意:另外大多數發行版有同樣的工具,但是名為'sar',就像原始的伯克利Unix工具)。該應用程序可以為你提供諸多方面的統計數字,包括內存、處理器、負載、網絡、線程、插座、錯誤和交換等方面。想了解"全面"的狀況,最快捷的辦法就是使用下列命令:
atsar -A

這會給出你系統上幾乎任何方面的隨意讀出結果,就像這樣(上面的屏幕截圖只是一部分,完整的讀出結果要長得多)。

'-A'參數意味著"給我顯示可能顯示的一切信息",是獲得簡要的完整系統視圖的好方法,以便查看哪裡出了異常(即你是否看到頻繁地交換?為何MySQL占用該處理器的全部資源?為何有那麼多的進程用於Apache?我的系統負載有多大?)這可以幫助你重點關注需要更多一點信息的某個方面。

問題來自裡面還是外面?

我們現在通過上面的'atsar'報告表明了當前狀況。系統上有許多的輸入輸出等待(IOWait),那麼它們又都來自哪裡呢?嗯,輸入輸出可能與磁盤有關(讀取/寫入),或者與網絡有關(發送/接收)。我們可以使用'iostat',深入分析統計數字,如下所示:

iostat -h -p ALL

顯示下列長長的輸出


顯示下列長長的輸出


這會以人可讀的格式(再次使用了'-h'參數)顯示所有的網絡、內存和磁盤設備(包括掛載的Samba或NFS設備,如果你有這些設備)及其事務、每秒讀取/寫入。如果你想看到在一段時間內不斷提供的這種信息(或者更實用的是,把這些信息輸出到某個文件),不妨在末尾添加一個整數(比如說,那樣'iostat -h -t -p ALL 5 > results.txt'就會每隔5秒生成這份報告,每個段落有一個起始時間,並保存到文件--注意這個操作會不斷持續,直到你摁住 CTRL-C組合鍵中斷這個過程,或者如果你在後台運行,直到你終止該過程)。

眼下有了內存、處理器、內存、網絡、磁盤和輸入輸出方面的統計數字,你對系統當前的狀況多少應該有所了解。別忘了使用我們的老朋友:'top'命令,看看到底哪些進程在運行,這會幫助你把當前運行的進程與你在我們的演練期間發現的那種類型的性能度量標准關聯起來。

輕松搞定鎖定問題

有時候,尤其是在排查故障時,你會發現自己采取的某個操作使得情況反而更糟糕了(比如終止了不該終止的進程,結果鎖定了XWindows,等等)。你似乎根本什麼都干不了。如果是這樣,你總是可以摁住CTRL-ALT-F1組合鍵,看看是否能得到明文外殼。如果能,你只要重啟系統,再試一下('sudo reboot')。有時候,連這一招都不管用。

這裡有一招可以讓你無須關閉系統電源、希望EXT3/4中的文件系統日志可以避免文件受損:REISUB。這是冷啟動之外最安全的辦法,而且幾乎總是屢試不爽,不管你的系統怎樣被"鎖定"了。你可以執行這個神奇的操作,如下所示:

摁住ALT和SYSREQ(PRINT SC)鍵的同時,輸入R E I S U B

現在,有幾個方面需要考慮。首先,你的鍵盤得有SYSREQ(PRINT SC)這個鍵,一些比較現代或比較緊湊的鍵盤沒有這個鍵。要是你的鍵盤沒有這個鍵,這一招顯然不管用。其次,那些字母輸入時不要太快。因為它們各自執行一個操作,每個字母之間最好間隔五秒左右,那樣它們就能完成各自的工作。具體來說,這幾個字母分別代表:

R = 切換到XLATE

E= 終止向所有運行中的進程(INIT除外)發信號

I= 終止init除外的所有進程(針對沒有響應終止命令的進程)

S= 同步所有文件系統

U= 重新掛載文件系統,只讀格式

B= 重啟系統

這個小技巧幾乎被人們所遺忘。我覺得要記住這個順序的最簡便辦法就是記住這個短語Reboot Even If System Utterly Broken(即使系統完全壞掉,也可以重啟)。我聽過別人倒過來識記,稱之為"BUSIER",但相對較短的這個BUSIER對我來說似乎太容易了。

結束語
與互聯網時代的許多方面一樣,排查問題的能力俨然成了一門失傳的技藝。就像本文中一樣,有好多地方可以查詢你所要找的答案。不過,僅僅知道幾個基本的命令和高效排查故障的順序,就可以替你節省時間,完全可能讓你邁上一個台階。
Copyright © Linux教程網 All Rights Reserved