LINUX系統(tǒng)故障診斷及其排除_第1頁
LINUX系統(tǒng)故障診斷及其排除_第2頁
LINUX系統(tǒng)故障診斷及其排除_第3頁
LINUX系統(tǒng)故障診斷及其排除_第4頁
LINUX系統(tǒng)故障診斷及其排除_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、2007-4-17 14:30:00 圖書導讀 ····本章解釋如何使用適用于Linux的大量性能工具及每個工具中信息的意義。即使已經(jīng)使用top或者sar,也可能從本章學到相關知識。應該養(yǎng)成使用這些工具的習慣。當然要知道如何診斷性能問題,但也應該定期尋找可能指示問題的關鍵指標的變化??梢允褂眠@些工具衡量新應用程序對性能的影響。就如同查看車內(nèi)的溫度表一樣,要注意Linux系統(tǒng)的性能指標。本章介紹的工具有:·   top·   sar·   vmstat·&#

2、160;  iostat·   free可以作為普通用戶運行這些工具。它們都利用/proc文件系統(tǒng)得到它們的數(shù)據(jù)。這些性能工具和幾個rpm一起提供。procps rpm提供top、free和vmstat。sysstat rpm提供sar和iostat。top命令是一個優(yōu)秀的交互式實用工具,用于監(jiān)視性能。它提供關于整體Linux性能的幾個概要行,但是報告進程信息才是top真正的長處。可以廣泛自定義進程顯示,也可以添加字段,按照不同指標排序進程列表,甚至從top注銷進程。sar實用工具提供監(jiān)視每一事件的能力。它至少有15個單獨的報告類別,包括CPU、磁盤、網(wǎng)

3、絡、進程、交換區(qū)等等。vmstat命令報告關于內(nèi)存和交換區(qū)使用的廣泛信息。它也報告CPU和一些I/O信息。iostat報告存儲輸入/輸出(I/O)統(tǒng)計資料。這些命令覆蓋許多相同的地方。本節(jié)討論如何使用這些命令并解釋每個命令產(chǎn)生的報告,并不討論所有15種sar語法,但是介紹了其中最常見的。3.1  toptop命令是最流行的性能工具之一。大多數(shù)系統(tǒng)管理員運行top查看Linux和UNIX系統(tǒng)的運行情況。top實用工具提供一種監(jiān)視進程和Linux整體性能的理想方法。將Linux進程稱作任務更準確,但是在本章中我們還是將它們稱作進程,因為這個工具也這樣稱呼它們。1普通用戶和root用戶都可

4、以運行top。圖3-1顯示一個空閑系統(tǒng)的典型top輸出。圖3-1  top輸出top顯示有兩個部分。大約前三分之一顯示關于Linux的整體信息,其余行為各個進程信息。如果擴展窗口則顯示更多進程而填充整個屏幕。更全面的Linux信息可以通過使用top之外的幾個命令來得到。不過,通過一個命令在一個屏幕上顯示所有信息比較理想。第一行顯示最近1分鐘、5分鐘和15分鐘的負載平均值。負載平均值表示在CPU上運行或者等待運行多少進程。uptime命令也可以用來顯示負載平均值。接下來是進程信息,之后是CPU、內(nèi)存和交換區(qū)。內(nèi)存和交換區(qū)信息與free命令輸出類似。在我們確定內(nèi)存和CPU使用之后的下一個

5、問題是哪些進程正在使用它。大部分進程信息也可以通過ps命令得到,但是top提供一種更易于閱讀的格式。最有用的是用于提供幫助的h,它列出top的其他交互式命令。3.1.1  添加和移除字段字段可以從顯示中添加或移除。進程輸出可以按照CPU、內(nèi)存或者其他指標排序。這是一個查看什么進程搶奪內(nèi)存的理想方法。各個Linux發(fā)布版本的top語法和交互式選項不同,幫助命令可以快速列出什么命令可用。有許多交互式選項可用,用戶應該花費一些時間來試驗它們。圖3-2顯示Red Hat Enterprise Linux ES release 3的幫助屏幕。圖3-2  top的幫助屏幕f命令用來從t

6、op輸出中添加或者移除字段。圖3-3是一個Red Hat Enterprise Linux ES release 3的幫助屏幕,顯示什么字段可以添加。圖3-3  top添加/移除字段的屏幕圖3-4顯示一個SUSE Linux 9.0 top的幫助屏幕,可見它們提供的命令差別非常大。圖3-4  SUSE top的幫助屏幕3.1.2  解釋輸出讓我們研究top信息的意義,以top的如下輸出為例:top輸出的第一行顯示負載平均值信息:這個輸出與uptime的輸出類似。從中可看到Linux已經(jīng)運行時間、當前時間和用戶數(shù)量,以及1分鐘、5分鐘和15分鐘負載平均值。接下來顯示

7、進程概要:我們看到總共有73個進程,其中72個進程正在休眠,一個進程正在運行,沒有僵化進程或者被停止的進程。當一個進程退出并且它的父進程沒有通過wait(2)或者waitpid(2)函數(shù)等待它時,它就會成為僵化進程。這通常是由于父進程在它的子進程之前退出造成的。不同于進程表中的項,僵化進程不使用資源。停止的進程是已經(jīng)向它發(fā)送STOP信號的進程。更多信息,請參見signal(7)手冊頁。接下來是CPU信息:CPU行描述CPU如何使用它們的CPU周期。top命令報告CPU在用戶或者內(nèi)核模式、運行良好進程以及處在空閑狀態(tài)時所花費時間的百分比。iowait列顯示沒有進程在CPU上運行時,處理器等待I/

8、O完成的時間的百分比。irq和softirq列表示處理硬件和軟件中斷所花費的時間。早于2.6版本的Linux內(nèi)核不報告irq、softirq和iowait。接下來是內(nèi)存信息:前三個指標提供內(nèi)存使用的概要,列出了總的可用內(nèi)存、已使用內(nèi)存和自由內(nèi)存,它們都是確定對于Linux內(nèi)存是否足夠所需信息。接下來五個指標標識已使用的內(nèi)存如何分配。shrd字段顯示共享的內(nèi)存使用,buff是緩沖使用的內(nèi)存。分配給內(nèi)核或者用戶進程的內(nèi)存可以處在三種不同狀態(tài):活動(active)、不活動臟(inactive dirty)和不活動干凈(inactive clean)。活動在top中用aotv表示,表示該內(nèi)存最近被使用

9、。不活動臟在top中用in_d表示,表示該內(nèi)存最近沒有使用,可以回收。要回收內(nèi)存,必須將它的內(nèi)容寫到磁盤,這個進程命名為“清洗”,也可稱作內(nèi)存的第四種臨時狀態(tài)。一旦被清洗,不活動臟內(nèi)存成為不活動干凈內(nèi)存,在top中用in_c表示。由Norm Murray和Neil Horman合著的Understanding Virtual Memory in Red Hat Enterprise Linux 3是一本優(yōu)秀的參考書,網(wǎng)址為http: rhel3_vm.pdf。接下來是交換區(qū)信息:av字段是可用的交換區(qū)總量,之后是已用數(shù)量和自由數(shù)量,最后是內(nèi)核用于緩存的內(nèi)存數(shù)量。top顯示的其余部分是進程信息:

10、top顯示盡可能多的能適合屏幕的進程。top(1)手冊頁中提供了字段說明的描述。表3-1提供了這些字段的概要。表3-1                                        &

11、#160;             top進程字段字    段說    明PID進程id編號USER進程所有者的用戶名PRI進程的優(yōu)先級SIZE進程大小,包括它的代碼、棧和數(shù)據(jù)區(qū)域,以千字節(jié)為單位RSS進程使用的內(nèi)存總量,以千字節(jié)為單位SHARE進程使用的共享內(nèi)存數(shù)量STAT進程的狀態(tài),通常R表示運行,S表示休眠%CPU自從最近的屏幕更新以來,這個進程使用的CPU百分比%MEM這個進程使用的內(nèi)存百分比TIME自從進程

12、啟動以來,這個進程使用的CPU時間量CPU最近執(zhí)行進程的CPUCOMMAND正在執(zhí)行的命令3.1.3  保存自定義一個非常好的top功能是保存當前配置??梢允褂媒换ナ矫顂任意更改顯示,然后按w保存該視圖。top在用戶的主目錄中寫入一個.toprc文件,用來保存配置,以便下一次這個用戶啟動top時使用相同的顯示選項。top也尋找默認配置文件/etc/toprc。這是一個全局配置文件,當任何用戶運行實用工具時,top將讀取該文件。這個文件可以使top以安全模式運行,也可以設置刷新延遲。安全模式阻止非root用戶注銷或者更改進程的正常值,也阻止非root用戶更改top的刷新值。Red H

13、at Enterprise Linux ES release 3的一個/etc/toprc示例文件如下所示:s表示安全模式,3定義三秒鐘刷新間隔。其他發(fā)布版本可能有不同的/etc/toprc格式。注銷進程是一個非常實用的功能。如果用戶有一個失控的進程,通過top命令可以輕易找到并注銷它,具體步驟為:運行top,通過u命令顯示用戶的所有進程,然后使用k注銷它。top不只是一個優(yōu)秀的性能監(jiān)視工具,它也可以用來通過注銷那些產(chǎn)生問題的進程從而改進性能。3.1.4  批處理模式top也可以以批處理模式運行。嘗試運行以下命令:-n 1告訴top只顯示一次迭代,-b選項表示以適合寫入文件的文本形式

14、輸出或者定向到另一個程序(例如less)。類似以下兩行腳本的命令可以順利完成cron工作:可以將它添加到crontab,并每隔15分鐘收集一次輸出。通過批處理可以輕松完成所有任務,無需用戶的干涉。所有進程都被列出,輸出并不是每5秒鐘刷新一次。如果用戶的主目錄中存在一個.toprc配置文件,那么它用來格式化顯示。以下是在一個多CPU Linux服務器上運行top批處理模式的輸出。注意,其中沒有顯示top輸出的所有258個進程。現(xiàn)在讀者可能明白了為什么top會如此流行。top的交互式本質(zhì)和容易自定義輸出的能力使它成為診斷問題的優(yōu)秀工具。3.2  sarsar是一個優(yōu)秀的一般性能監(jiān)視工具,

15、它可以輸出Linux所完成的幾乎所有工作的數(shù)據(jù)。sar命令在sysetat rpm中提供。示例中使用sysstat版本5.0.5,這是穩(wěn)定的最新版本之一。關于版本和下載信息,請訪問sysstat主頁http:/perso.wanadoo.fr/sebastien.godard/。sar可以顯示CPU、運行隊列、磁盤I/O、分頁(交換區(qū))、內(nèi)存、CPU中斷、網(wǎng)絡等性能數(shù)據(jù)。最重要的sar功能是創(chuàng)建數(shù)據(jù)文件。每一個Linux系統(tǒng)都應該通過cron工作收集sar數(shù)據(jù)。該sar數(shù)據(jù)文件為系統(tǒng)管理員提供歷史性能信息。這個功能非常重要,它將sar和其他性能工具區(qū)分開。如果一個夜晚批處理工作正常運行兩次,直

16、到下一個早上才會發(fā)現(xiàn)這種情況(除非被叫醒)。我們需要具備研究12小時以前的性能數(shù)據(jù)的能力。sar數(shù)據(jù)收集器提供了這種能力。有許多報告語法,我們首先討論數(shù)據(jù)收集。3.2.1  sar數(shù)據(jù)收集器sar數(shù)據(jù)收集通過/usr/lib/sa中的一個二進制可執(zhí)行文件和兩個腳本來完成。sar數(shù)據(jù)收集器是一個位于/usr/lib/sa/sadc的二進制可執(zhí)行文件。sadc的工作是寫入數(shù)據(jù)收集文件/var/1og/sa/。可以為sadc提供幾個選項。常見語法是:間隔是取樣間的秒數(shù),iterations是要取得的樣本數(shù)量,file name定義輸出文件。簡單的sadc語法是/usr/lib/sa/sad

17、c 360 5/tmp/sadc.out。這個命令在5分鐘間隔取得5個樣本并將它們保存在/tmp/sadc.out。我們應該定期收集樣本,因此需要一個由cron運行的腳本。應該把樣本放在一個有意義的地方,如在前一節(jié)中使用top腳本時那樣。sysstat rpm提供/usr/lib/sa/sa1腳本來完成所有這些事情。sa1(8)手冊頁比sa1腳本本身要長得多。/usr/lib/sa/sa1是一個非常簡單的腳本,使用語法sadc -F -L 1 1 /var/log/sa/sa#來運行sadc,其中#是某月的日期。較老版本的sa1使用date+.%Y_%m_%d的輸出作為文件后綴。如果需要,可以

18、使用-F選項使sadc強制創(chuàng)建輸出文件。-L在寫入輸出文件之前鎖定它,以防止兩個sadc進程同時運行時損壞該文件。較老版本的sadc沒有-L選項,因此sa1腳本執(zhí)行手工鎖定。sa1腳本的選項只是樣本之間的間隔和取樣迭代的次量。cron文件(/etc/cron.d/sysstat)和sysstat一起提供,在各sysstat版本之間它有所不同。以下是5.0.5版本的sysstat的條目:可見,在sysstat rpm安裝之后,sadc開始取得樣本。sysstat主頁是http:/perso.wanadoo.fr/ sebastien.godard/2。文檔鏈接提供以下類似2006年1月14日的c

19、rontab方案:Sebastien Godard的網(wǎng)站的crontab示例建議周一至周五從早晨8點到下午6點每10分鐘取一次樣本,其他時間每小時取得一個樣本(注意,crontab注釋為下午7點,但實際上是18:00,即下午6點)。如果/var中的磁盤空間足夠,可以每天都每小時的每10分鐘取樣一次。如果周末備份較慢,每小時一次sadc取樣可能幫助不大。現(xiàn)在讓我們研究更流行的報告語法。3.2.2  CPU統(tǒng)計數(shù)據(jù)sar -u輸出顯示CPU信息。-u選項是sar的默認選項。該輸出以百分比顯示CPU的使用情況。表3-2解釋該輸出。表3-2     &

20、#160;                                                sar -u字段字

21、60;   段說    明CPUCPU編號%user在用戶模式中運行進程所花的時間%nice運行正常進程所花的時間%system在內(nèi)核模式(系統(tǒng))中運行進程所花的時間%iowait沒有進程在該CPU上執(zhí)行時,處理器等待I/O完成的時間%idle沒有進程在該CPU上執(zhí)行的時間這些看起來應該比較熟悉,它和top報告中的CPU信息內(nèi)容相同。以下顯示輸出格式:其中的5 10導致sar以5秒鐘間隔取得10個樣本。任何sar報告的第一列都是時間戳。我們本來可以研究使用-f選項通過sadc創(chuàng)建的文件。這個sar語法顯示sar -f/var/log/ sa/s

22、a21的輸出:在多CPU Linux系統(tǒng)中,sar命令也可以為每個CPU分解該信息,如以下sar -u -P ALL 5 5輸出所示:3.2.3  磁盤I/O統(tǒng)計數(shù)據(jù)sar是一個研究磁盤I/O的優(yōu)秀工具。以下是sar磁盤I/O輸出的一個示例。第一行-d顯示磁盤I/O信息,5 2選項是間隔和迭代,就像sar數(shù)據(jù)收集器那樣。表3-3列出了字段和說明。表3-3                  

23、0;                                    sar -d字段字    段說    明DEV磁盤設備tps每秒傳輸數(shù)(或者每秒IO數(shù))rd_sec/s每秒512

24、字節(jié)讀取數(shù)wr_sec/s每秒512字節(jié)寫入數(shù)512只是一個測量單位,不表示所有磁盤I/O均使用512字節(jié)塊。DEV列是dev#-#格式的磁盤設備,其中第一個#是設備主編號,第二個#是次編號或者連續(xù)編號。對于大于2.5的內(nèi)核,sar使用次編號。例如,在sar -d輸出中看到的dev3-0和dev3-1。它們對應于/dev/hda和/dev/hdal。請看/dev中的以下各項:/dev/hda有主編號3和次編號0。hda1有主編號3和次編號1。3.2.4  網(wǎng)絡統(tǒng)計數(shù)據(jù)sar提供四種不同的語法選項來顯示網(wǎng)絡信息。-n選項使用四個不同的開關:DEV、EDEV、SOCK和FULL。DEV顯

25、示網(wǎng)絡接口信息,EDEV顯示關于網(wǎng)絡錯誤的統(tǒng)計數(shù)據(jù),SOCK顯示套接字信息,F(xiàn)ULL顯示所有三個開關。它們可以單獨或者一起使用。表3-4顯示通過-n DEV選項報告的字段。表3-4                                    

26、;              sar -n DEV字段字    段說   明IFACELAN接口rxpck/s每秒鐘接收的數(shù)據(jù)包txpck/s每秒鐘發(fā)送的數(shù)據(jù)包rxbyt/s每秒鐘接收的字節(jié)數(shù)txbyt/s每秒鐘發(fā)送的字節(jié)數(shù)rxcmp/s每秒鐘接收的壓縮數(shù)據(jù)包txcmp/s每秒鐘發(fā)送的壓縮數(shù)據(jù)包rxmcst/s每秒鐘接收的多播數(shù)據(jù)包以下是使用-n DEV選項的sar輸出:關于網(wǎng)絡錯誤的信息可以用sar -n EDEV

27、顯示。表3-5列出了顯示的字段。表3-5                                                sa

28、r -n EDEV字段字    段說    明IFACELAN接口rxerr/s每秒鐘接收的壞數(shù)據(jù)包txerr/s每秒鐘發(fā)送的壞數(shù)據(jù)包coll/s每秒沖突數(shù)rxdrop/s因為緩沖充滿,每秒鐘丟棄的已接收數(shù)據(jù)包數(shù)txdrop/s因為緩沖充滿,每秒鐘丟棄的已發(fā)送數(shù)據(jù)包數(shù)txcarr/s發(fā)送數(shù)據(jù)包時,每秒載波錯誤數(shù)rxfram/s每秒接收數(shù)據(jù)包的幀對齊錯誤數(shù)rxfifo/s接收的數(shù)據(jù)包每秒FIFO過速的錯誤數(shù)txfifo/s發(fā)送的數(shù)據(jù)包每秒FIFO過速的錯誤數(shù)SOCK參數(shù)顯示IPCS套接字信息。表3-6列出顯示的字段及其意義。表3-6 &

29、#160;                                              sar -n SOCK字段字 

30、0;  段說    明totsck使用的套接字總數(shù)量tcpsck使用的TCP套接字數(shù)量udpsck使用的UDP套接字數(shù)量rawsck使用的raw套接字數(shù)量ip-frag使用的IP段數(shù)量sar可以產(chǎn)生許多其他報告。我們有必要仔細閱讀sar(1)手冊頁,查看是否有自己需要的其他報告。3.3  vmstatvmstat命令也是顯示Linux性能指標的方法,它報告了許多信息,理解這些信息有一定難度。輸出分為6個類別:進程、內(nèi)存、交換區(qū)、I/O、系統(tǒng)和CPU。與iostat類似,第一個樣本是從最近重新啟動以來的平均值。以下是一個典型的vmstat輸出:-

31、m選項使內(nèi)存字段以兆字節(jié)為單位顯示。vmstat和許多其他性能命令一樣使用取樣間隔和計數(shù)參數(shù)。進程(procs)信息有兩列。r列是可運行進程的數(shù)量,b列是阻塞進程的數(shù)量。內(nèi)存部分有4個報告虛擬內(nèi)存如何使用的字段。表3-7列出這些字段及其意義。表3-7                              

32、                    vmstat內(nèi)存字段字    段說    明Swpd已用的交換空間數(shù)量free自由RAM數(shù)量buff緩沖使用的RAM數(shù)量cache文件系統(tǒng)緩存使用的RAM數(shù)量接下來是交換(swap)指標。交換只是一個古老術語,但是顯然不會消失。交換涉及分頁讀取或寫入磁盤的進程所消耗的所有內(nèi)存。它將顯示系統(tǒng)達到的性能指標水平。

33、而Linux所做的是,以小塊方式按照需要對磁盤空間進行分頁操作。因此,我們可能應該停止說交換到磁盤的內(nèi)存,并開始說分頁到磁盤的內(nèi)存。對于任何一種方法,表3-8解釋了相關字段。表3-8                                   

34、;                vmstat交換字段字    段說   明si從磁盤分頁到內(nèi)存的數(shù)量so從內(nèi)存分頁到磁盤的數(shù)量在交換之后是兩個I/O字段。這部分提供了一個簡略介紹以幫助確定Linux是否正忙于完成許多磁盤I/O。vmstat只提供兩個字段,顯示出入磁盤的數(shù)據(jù)量(參見表3-9)。表3-9         

35、;                                          vmstat io字段字    段說    

36、明bi從磁盤讀入的塊bo寫入磁盤的塊系統(tǒng)字段提供Linux內(nèi)核進行進程管理的繁忙程度的摘要。中斷和上下文開關參見表3-10。上下文開關指進程移出CPU或者移入CPU。表3-10                                               vmstat系統(tǒng)字段字    段說    明in系統(tǒng)中斷cs進程上下文開關最后,CPU狀態(tài)信息用總CPU時間的百分比來表示,如表3-11所示。表3-11                 

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論