非常經典的UNIX系統調優的文章(轉)

amyz發表於2007-08-10
非常經典的UNIX系統調優的文章(轉)[@more@]

  導致系統執行遲緩的原因

  有許多不同的潛在的原因會導致系統執行遲緩,但通常可以將它們分為以下幾個方面:

  • 程式太多。您的系統可能僅僅只是同時執行了太多的應用程式,或者正在執行少量 CPU 密集型的操作。要麼是伺服器超負荷執行,要麼是失控程式耗盡了系統資源。
  • 活動記憶體太多。如果程式使用了大量的記憶體,那麼系統可能會從磁碟換入大量的頁面並將大量的頁面換出到磁碟,這意味著您的系統花費在記憶體交換上的時間比真正使用記憶體的時間更多。
  • 硬體故障。有時候,您會碰到導致系統執行遲緩的硬體故障。不能正常工作的網路卡、硬碟或記憶體,都可能導致系統花費很長的時間等待資訊。

  要對該問題進行診斷,您需要使用大量可用的工具來檢查您的 UNIX 系統。

  選擇連線方法

  如果您的計算機執行得特別慢,那麼第一個問題是如何連線到該計算機以便啟動監視程式。執行遲緩的計算機可能無法接受 Telnet 或透過遠端 Shell 協議(如 ssh)的連線。

  如果您尚未登入到系統,那麼可能根本無法進行訪問。相反,可以考慮直接或透過獨立的硬體解決方案(如網路或基於串列埠的控制檯監視器)來使用控制檯。

  這種控制檯更有可能允許您登入到系統,因為已經有一個登入程式(您的 Shell 將會代替它)正在執行。如果在登入到系統後,您無法透過 Shell 執行任何程式,則表示系統已經耗盡了程式空間,那麼重新啟動可能是使系統恢復正常的唯一辦法。

  要重新啟動系統,請使用 init 或 telinit 來調整執行級別,執行級別 6 通常表示重新啟動。使用 init/telinit 更有可能重新啟動系統,因為在進行重新啟動時僅涉及到了一個程式。

  在系統啟動並執行後,您需要使用本文中介紹的一些技巧來監視該系統的執行狀態並記錄其輸出結果。如果再次出現系統執行遲緩的情況,您可以執行事後檢查除錯並分析系統執行遲緩的原因。

  使用 uptime

  如果您懷疑計算機執行得很慢,那麼您應該執行的第一個命令是

  uptime

  Uptime

報告當前時間、計算機啟動和執行時間(換句話說,是從計算機啟動以來的時間)以及當前的使用者數。然後它會提供三幅圖表,以顯示最近 1 分鐘、5 分鐘和 15 分鐘的平均負載。例如:

  $ uptime

18:28:54 up 10 days, 8:38, 2 users, load average: 2.24, 5.34, 3.42

  在這個示例中,該計算機在最近 1 分鐘、5 分鐘和 15 分鐘內的平均負載分別超過了 2、5 和 3。

  平均負載的定義比較複雜,並且受到正在執行的程式的狀態影響。通常,正在執行、等待 CPU 或等待 I/O 的每個程式都會使平均負載加 1。然後對這些圖表進行計算並根據時間平均。

  在單 CPU 的系統中,平均負載大於 1 則表示該 CPU 難以承受您所分配的負載型別。但是因為 UNIX 的多程式的本質,在您關注到該問題前,平均負載在長時間內(換句話說,對應於 15 分鐘的圖表)達到 2 通常是可以接受的。

  在多 CPU(或多核)系統中,需要將平均負載除以 CPU 的個數。要確定計算機是否超負荷執行,請使用上述原則。

  檢視這些圖表的另一種可選的方法是將它們看作百分比,換句話說,如果上面的圖表來自於一個單 CPU 系統,那麼如果該計算機的速度比目前快百分之 224,那麼它就能夠處理當前的負載。

  在多 CPU 系統中,您應該使用 CPU 數目加 1 來確定最大負載。例如,一個 4 CPU 的系統可以承受的最大平均負載為 5。

  通常在短時間內,計算機的平均負載可能比其最大平均負載高的多。例如,當構建或編譯一個應用程式、或執行一項磁碟密集型任務時,平均負載可能會激增。這正是輸出結果中包含 1、5 和 15 分鐘平均值的原因,因為這樣可以幫助消除任何瞬態負載極大值。

  任何長時間的或未預料到的較高的值都可能表示存在問題,並且需要進行進一步的研究。如果這些數值較低,但系統卻執行遲緩,那麼可能表示存在交換空間的問題。

  使用 ruptime

  如果您管理著由許多系統組成的大型網路,那麼有一種簡單的方法來監視負載和網路中所有計算機的使用情況。ruptime 工具收集網路上所有計算機廣播的資料,並將其集中到一個本地檔案中,以便對所有計算機的當前狀態進行檢查。

  例如,清單 1 顯示了一個小型網路的輸出結果:

  清單 1. 一個小型網路的輸出

  $ ruptime

bear     up 10+09:13,   2 users, load 0.66, 0.68, 0.50

ultra3    up 6+01:16,   1 user,  load 0.00, 0.00, 0.00

atuin    down 4+00:52

  最後一臺計算機 11 分鐘內沒有報告任何資料,所以將其列為停機。

  要生成這些資訊,需要在本地網路中的每臺計算機上執行 rwhod 守護程式(有時候是 in.rwhod)。這個守護程式為本地計算機廣播資訊,並收集來自所有其他計算機的廣播資料。

  因為 rwho/ruptime 系統的工作方式的原因,所以可能存在一些效能問題,尤其是在大型的網路中,它們生成的大量的系統報告和網路流量可能是有害的。在非常繁忙的系統中,對這些資料進行廣播的需求可能也就意味著永遠無法報告這些資訊,這些資料可能過期,或者在系統繁忙時將其報告為停機。

  跟蹤大型程式

  如果您懷疑是一個大型的或過度繁忙的程式導致了該問題,那麼您應該檢查 ps 工具的輸出,查詢程式大小、記憶體百分比和 CPU 利用率。在 SVR4 系統(Solaris 和 AIX®)中,您可以使用下列命令來獲得程式的列表(請參見清單 2)。

  清單 2. 獲得程式列表的命令

  $ ps -A -o pcpu,pmem,rss,vsz,comm

%CPU %MEM RSS VSZ COMMAND

0.2 0.0  0  0 fsflush

0.1 0.2 1464 8288 /usr/lib/ssh/sshd

0.1 0.1 1032 1320 ps

0.0 1.0 9536 47608 /usr/openwin/bin/Xsun

0.0 0.7 6312 10720 dtgreet

0.0 0.6 6136 9352 /usr/sfw/sbin/snmpd

0.0 0.4 3208 5720 /usr/lib/fm/fmd/fmd

0.0 0.3 2808 8512 /usr/lib/ssh/sshd

0.0 0.3 2800 8504 /usr/lib/ssh/sshd

0.0 0.3 2768 8512 /usr/lib/ssh/sshd

0.0 0.3 2368 4056 /usr/sbin/nscd

0.0 0.2 2096 9176 /usr/dt/bin/dtlogin

...

  清單 3 顯示了在 BSD 派生系統中的 ps 工具的輸出。

  清單 3. 一個 BSD 系統中獲得的程式列表

  $ ps -A -o pcpu,pmem,rss,vsz,command|sort -n +3

%CPU %MEM  RSS   VSZ COMMAND

 0.0 0.0  152  27236 nfsd-server  

 0.0 0.0  152  27236 nfsd-server  

 0.0 0.0  152  27236 nfsd-server  

 0.0 0.0  152  27236 nfsd-server  

 0.0 0.0  152  27236 nfsd-server  

 0.0 0.0  152  27236 nfsd-server  

 0.0 0.0  152  27236 nfsd-server  

 0.0 0.0  152  27236 nfsd-server  

 0.0 0.0  164  27236 nfsd-master  

 0.0 0.0  224  27240 /usr/sbin/update

 0.0 0.3  4364  29196 /usr/sbin/securityd

 0.0 0.2  2760  29288 jabberd -c /etc/jabber/jabber.xml -H

/private/var/jabber/ -U jabber

 0.0 0.0  184  29300 nfsiod -n 4

0.0 0.2  3544  29712 /usr/sbin/configd

 0.0 0.0  500  30628 /usr/sbin/sshd -i

 0.0 0.0  260  30648 /usr/sbin/smbd -D

 0.0 0.0  736  30648 /usr/sbin/smbd -D

 0.0 0.1  1216  30700 /usr/sbin/sshd -i

...

 0.0 0.1  2180  50664 imapd: narcissus.mcslp.pri [192.168.0.110]

mc user.mc   

 0.0 0.1  2184  50664 imapd: sulaco.mcslp.pri [192.168.0.101]

mc user.mc    

 0.0 0.1  2204  50720 imapd: narcissus.mcslp.pri [192.168.0.110]

buy user.buy  

 0.0 0.1  2264  50720 imapd: sulaco.mcslp.pri [192.168.0.101] buy

user.buy   

 0.0 0.1  2272  50984 imapd: kernel.mcslp.pri [192.168.0.106] slp

user.slp   

 0.0 1.2 18348  54368 servermgrd -x

 0.0 0.2  3200  85920 /usr/sbin/named -f

 0.0 1.1 16820  122240 /usr/libexec/mysqld --basedir=/usr

--datadir=/var/mysql --user=mysql --pid-file=/var/mysq

 0.0 0.5  8572  158164 /usr/libexec/slapd -d 0 -h ldap:///

ldapi://%2Fvar%2Frun%2Fldapi

 0.0 0.0  204  289396 rpc.statd

  在上面兩個例子中,程式列表中顯示了 CPU 和記憶體使用率,以便您能夠清楚地瞭解系統中的負載情況。‘s’和‘stat’列(分別對應於 SVR4 和 BSD)顯示了程式的當前狀態。對於大量的執行的程式,狀態‘R’表示該程式當前正在執行。

  透過使用狀態、CPU 和記憶體百分比的組合,您應該可以確定是否存在失控的 和大量消耗系統資源的程式。

  使用 iostat

  iostat 工具提供了關於終端、磁碟活動和 CPU 利用率的資訊。您可以指定單個數值引數來設定報告的時間間隔,並指定另一個數值引數來設定報告的數量。例如,清單 4 顯示瞭如何每 5 秒鐘報告相應的統計資訊。

  清單 4. 每隔 5 秒報告統計資訊

  $ iostat 5

  tty    dad1     sd1      nfs1      cpu

tin tout kps tps serv kps tps serv kps tps serv  us sy wt id

  0  7 440 39  14  0  0  3  0  0  0  5 18 0 77

  0  39  2  0  0  0  0  0  0  0  0  0 0 0 100

  0  13  4  3  0  0  0  0  0  0  0  0 0 0 100

  0  13  0  0  0  0  0  0  0  0  0  0 0 0 100

  對於不同的系統,預設情況下顯示的確切的資訊也有所不同,清單 4 來自於一個 Solaris 系統。清單 5 中的示例來自於一個 BSD 環境。

  清單 5. 一個 BSD 系統中的 iostat

  disk1      disk0    cpu

 KB/t tps MB/s  KB/t tps MB/s us sy id

167.67  0 0.02 20.70  5 0.09  6 3 90

 0.00  0 0.00  0.00  0 0.00 15 3 82

 0.00  0 0.00  0.00  0 0.00 16 2 82

 0.00  0 0.00 14.33 24 0.33 18 4 79

 0.00  0 0.00  2.83  1 0.00 23 4 73

  先來看看 CPU 統計資訊,這些列分別顯示了使用者 (us)、系統 (sy) 和空閒 (id) 百分比。使用者時間顯示了用於該使用者程式的時間。系統時間則顯示了系統程式耗費的時間(在沒有顯示等待時間時,包括系統等待 I/O 的時間)。空閒時間顯示了 CPU 處於空閒狀態的時間的百分比。

  磁碟的輸出顯示了各個物理磁碟(在合適的情況下包括 NFS 載入)的工作情況,通常以每秒處理事務數和每秒傳輸的 MB 或 KB 作為單位。其中的較大數值,尤其是同時具有較高的等待/系統時間,可能表示對於該系統而言,磁碟的速度太慢。您可以嘗試展開您的應用程式,以便它使用不同的磁碟,這樣可能可以改善它的效能。

  如果該磁碟同時用作虛擬記憶體,那麼可能是因為缺少記憶體和過多的交換的問題。

  使用 vmstat

  您可以使用 vmstat 工具來監視虛擬記憶體統計資訊。與 iostat 一樣,它接受一個數值時間間隔(請參見清單 6)。

  清單 6. 使用 vmstat 監視記憶體統計資訊

  $ vmstat 5

kthr   memory      page      disk   faults   cpu

r b w  swap free re mf pi po fr de sr dd s1 -- in  sy 

cs us sy id

0 0 0 2820888 809552 94 525 121 69 50 0 26 16 0 0 297 1342 

272 9 4 87

0 0 0 2824752 778872 2  7 0 0 0 0 0 0 0 0 229  34 

109 0 1 99

0 0 0 2824752 778872 0  0 0 0 0 0 0 2 0 0 233  28 

116 0 0 100

0 0 0 2824752 778872 0  0 0 0 0 0 0 0 0 0 228  26 

110 0 0 100

0 0 0 2824752 778872 0  0 0 0 0 0 0 0 0 0 229  28 

111 0 0 100

  vmstat 工具輸出執行緒/程式資訊、記憶體/交換區使用率、換進/換出頁面、磁碟 I/O、頁面錯誤和 CPU 統計資訊。

  CPU/執行緒塊顯示了執行佇列 (r) 中的程式/執行緒、等待 I/O 資源的阻塞程式 (b) 和那些被交換的程式。阻塞程式列中較高的值表示磁碟的速度較慢。交換列中較高的數值表示存在許多程式使用了太多的記憶體,需要對它們進行換入和換出。交換是一項開銷非常高的處理,並且將明顯地降低系統的效能。

  記憶體列顯示了當前可用的交換區大小和空閒列表的大小(如果對 RAM 提出請求,可以被交換的頁面的數目)。較低的交換值表示即將耗盡交換空間,這並不一定表示存在問題,只要您擁有足夠的 RAM 來執行相應的應用程式。較低的空閒列表值可能表示使用了大量的活動 RAM,如果您向該系統中新增更多的程式,那麼可能引起交換空間的使用。

  頁面列顯示了從磁碟交換進來的和交換到磁碟的記憶體頁面。鍵值列是 pi/po(換進/換出的頁面),這表示了對多少頁面進行了交換。較高的分頁表示缺少 RAM,較高的掃描速率(sr 列)顯示了潛在的記憶體瓶頸。

  使用 top

  top 工具可以提供一種有效的方法來監視活動中的系統和活動的程式、負載以及記憶體統計資訊。有許多不同型別的 top,在預設情況下,某些系統中安裝了其中的一部分,而這些 top 是最新的開放原始碼版本的工具。它所提供的相關資訊更像是 uptime、交換空間和 ps 工具的組合。例如,下面的輸出來自於 Solaris 系統中執行的 V3.5.1 版本的 top 工具(請參見清單 7)。

  清單 7. 使用 top

  last pid: 9385; load averages: 7.14, 2.98, 1.21  

61 processes: 55 sleeping, 4 running, 1 zombie, 1 on cpu

CPU states: 0.0% idle, 93.8% user, 6.2% kernel, 0.0% iowait, 

0.0% swap

Memory: 1024M real, 712M free, 125M swap in use, 2705M swap free

  PID USERNAME LWP PRI NICE SIZE  RES STATE  TIME  CPU COMMAND

 9313 root    1 22  0  35M  34M run   0:03 8.87% cc1

 9349 root    1 22  0  21M  20M run   0:01 5.47% cc1

 9385 root    1 39  0 4320K 3904K run   0:00 0.38% as

 9384 root    1 29  0 3888K 3424K run   0:00 0.30% as

 9145 root    1 59  0 3736K 2144K cpu   0:00 0.11% top

 9180 root    1 59  0 1808K 1472K sleep  0:00 0.10% make

  486 root    1 59  0  46M 9536K sleep  0:00 0.03% Xsun

  548 root    1 59  0  10M 6360K sleep  0:00 0.03% dtgreet

  553 mc     1 49  0 8288K 1472K sleep  0:01 0.02% sshd

 9345 root    1 49  0 1328K 928K sleep  0:00 0.01% gcc

 9348 root    1 59  0 1328K 928K sleep  0:00 0.01% gcc

 9325 root    1 49  0 1328K 928K sleep  0:00 0.01% gcc

  599 mc     1 59  0 8288K 1488K sleep  0:00 0.00% sshd

 9312 root    1 59  0 1328K 928K sleep  0:00 0.00% gcc

   9 root   16 59  0 9464K 2016K sleep  0:06 0.00%

svc.configd

  top 工具顯示了各個程式的 CPU 使用情況,例如,在前面的示例中,可以看到正在編譯大量的檔案以及它們使用 CPU 的比例。

  您還應該注意程式的狀態:較高的執行程式的數目可能表示系統過於繁忙(將執行程式與 CPU 狀態和系統的平均負載進行比較)。Top 本身可能耗費大量的 CPU,所以最好是以較大的更新時間間隔來執行它,以避免監視工作對系統效能帶來損害。您可以使用

  -s

  -d

命令列選項(根據您使用的平臺來決定)以秒為單位來指定更新的時間間隔。

  使用 SAR

  有些時候,您需要在系統出現問題後對其狀態進行監視,但是卻又無法實時監視伺服器的狀態,在這種情況下,您可以使用 SAR(系統活動報告程式)工具。它以指定的時間間隔將相關資訊記錄到一個全域性檔案中,然後可以在事後對該檔案進行處理以顯示計算機的相關資訊,該工具正是以這種方式為您提供幫助。

  因為記錄資訊的程式持續執行於後臺,所以它可以用來詳細地描述系統在一段時間內的效能,並且可以幫助您確定問題的原因。通常以天、月或您指定的時間間隔為單位來記錄相應的資訊。日誌儲存到 /var/log/sa/saDD 或 /usr/adm/sa/saDD,其中 DD 表示一個月中的第幾天。啟用 SAR 工具與具體的系統有關,並且通常您需要建立一個 cron 任務來自動地執行資料收集指令碼 (sa1)。另一個指令碼 sa2 可以建立每天的報告,以便您對其進行研究。例如,下面的 crontab 顯示了 Solaris 系統中預設記錄的系統效能統計資訊:

  0 * * * 0-6 /usr/lib/sa/sa1

20,40 8-17 * * 1-5 /usr/lib/sa/sa1

5 18 * * 1-5 /usr/lib/sa/sa2 -s 8:00 -e 18:01 -i 1200 -A

  在收集到了這些資訊之後,可以使用

  sar

命令來提取相應的資料。系統所記錄下來的資訊量可能非常大,並且可以從該資料中選擇和提取的詳細資訊也非常大。然而,透過使用 SAR 的

  -A

命令列引數,您可以瞭解到資料的數量和質量,該選項報告了當前記錄的所有資訊。

  清單 8. 使用帶 -A 引數的 sar 命令生成的輸出

  11:49:38  %usr  %sys  %wio  %idle

13:20:00    1    1    0   99

13:40:01   19    5    0   76

14:00:00    0    0    0   100

14:20:00    0    0    0   100

14:40:01    0    0    0   100

15:00:00    0    0    0   100

15:20:00    0    0    0   100

Average    3    1    0   96

11:49:38  device    %busy  avque  r+w/s blks/s avwait avserv

...

Average  dad1       1   0.3    5   365  47.3   4.5

      dad1,a      0   0.0    0    4  15.4   8.6

      dad1,b      0   0.0    0    0   0.0  13.8

      dad1,c      0   0.0    0    0   0.0   0.0

      dad1,d      1   0.2    3   143  53.0   3.9

      dad1,e      0   0.0    0   39  117.3   5.9

      dad1,h      0   0.0    1   178  29.0   4.6

      nfs1       0   0.0    0    0   0.0   0.0

      nfs2       0   0.0    0   31   0.5  14.5

      sd1        0   0.0    0    0   0.0   3.3

11:49:38 runq-sz %runocc swpq-sz %swpocc

13:20:00   2.0    2   0.0    0

13:40:01   5.3   15   0.0    0

14:00:00   0.0    0   0.0    0

14:20:00   0.0    0   0.0    0

14:40:01   1.5    0   0.0    0

15:00:00   0.0    0   0.0    0

15:20:00   0.0    0   0.0    0

Average   5.0    2   0.0    0

11:49:38 bread/s lread/s %rcache bwrit/s lwrit/s %wcache pread/s pwrit/s

13:20:00    0   11   97    0    1   89    0    0

13:40:01    0   803   100    4   381   99    0    0

14:00:00    0    0   100    0    0   39    0    0

14:20:00    0    0   100    0    0   56    0    0

14:40:01    0    0   100    0    0   61    0    0

15:00:00    0    0   100    0    0   48    0    0

15:20:00    0    0   100    0    0   32    0    0

Average    0   120   100    1   56   99    0    0

11:49:38 swpin/s bswin/s swpot/s bswot/s pswch/s

13:20:00  0.00   0.0  0.00   0.0   305

13:40:01  0.00   0.0  0.00   0.0   223

14:00:00  0.00   0.0  0.00   0.0   111

14:20:00  0.00   0.0  0.00   0.0   112

14:40:01  0.00   0.0  0.00   0.0   112

15:00:00  0.00   0.0  0.00   0.0   114

15:20:00  0.00   0.0  0.00   0.0   114

Average   0.00   0.0  0.00   0.0   152

11:49:38 scall/s sread/s swrit/s fork/s exec/s rchar/s wchar/s

13:20:00   526   39   26  0.64  0.59  38118  25779

13:40:01  2288   803   320  9.31  6.53 773352 1558934

14:00:00   22    2    2  0.01  0.01   342   186

14:20:00   20    2    2  0.00  0.00   150   128

14:40:01   20    2    2  0.01  0.00   153   128

15:00:00   26    3    3  0.01  0.02   326   167

15:20:00   29    3    3  0.02  0.03   641   272

Average   416   125   52  1.46  1.04 118615 232791

11:49:38 iget/s namei/s dirbk/s

13:20:00    2   31    3

13:40:01   29   385   25

14:00:00    0    1    0

14:20:00    0    0    0

14:40:01    0    0    0

15:00:00    0    1    0

15:20:00    0    2    0

Average    5   61    4

11:49:38 rawch/s canch/s outch/s rcvin/s xmtin/s mdmin/s

13:20:00    0    0   39    0    0    0

13:40:01    1    0   397    0    0    0

14:00:00    0    0    9    0    0    0

14:20:00    0    0    0    0    0    0

14:40:01    0    0    0    0    0    0

15:00:00    0    0   16    0    0    0

15:20:00    0    0   38    0    0    0

Average    0    0   72    0    0    0

11:49:38 proc-sz  ov inod-sz  ov file-sz  ov  lock-sz

13:20:00  53/16154  0 1732/69661  0 358/358   0  0/0 

13:40:01  54/16154  0 15118/69661  0 358/358   0  0/0 

14:00:00  57/16154  0 15120/69661  0 359/359   0  0/0 

14:20:00  57/16154  0 15120/69661  0 359/359   0  0/0 

14:40:01  57/16154  0 15120/69661  0 359/359   0  0/0 

15:00:00  57/16154  0 15121/69661  0 359/359   0  0/0 

15:20:00  57/16154  0 15127/69661  0 359/359   0  0/0 

11:49:38  msg/s sema/s

13:20:00  0.00  0.00

13:40:01  0.00  0.00

14:00:00  0.00  0.00

14:20:00  0.00  0.00

14:40:01  0.00  0.00

15:00:00  0.00  0.00

15:20:00  0.00  0.00

Average   0.00  0.00

11:49:38 atch/s pgin/s ppgin/s pflt/s vflt/s slock/s

13:20:00  13.39  3.67  5.05  41.14  77.09  0.00

13:40:01 188.44  9.91  25.61 373.73 1086.42  0.00

14:00:00  0.30  0.05  0.06  0.61  1.59  0.00

14:20:00  0.16  0.00  0.00  0.34  0.76  0.00

14:40:01  0.20  0.00  0.00  0.48  1.01  0.00

15:00:00  0.72  0.01  0.01  0.98  2.37  0.00

15:20:00  0.89  0.02  0.02  1.43  3.47  0.00

Average  29.66  1.90  4.38  60.43 170.40  0.00

11:49:38 pgout/s ppgout/s pgfree/s pgscan/s %ufs_ipf

13:20:00   0.03   0.06   0.06   0.00   0.00

13:40:01   6.41  19.18  13.84   0.00   0.00

14:00:00   0.00   0.00   0.00   0.00   0.00

14:20:00   0.00   0.00   0.00   0.00   0.00

14:40:01   0.00   0.00   0.00   0.00   0.00

15:00:00   0.00   0.00   0.00   0.00   0.00

15:20:00   0.00   0.00   0.00   0.00   0.00

Average   0.95   2.83   2.05   0.00   0.00

11:49:38 freemem freeswap

13:20:00 109186 5736615

13:40:01  95816 5614822

14:00:00  97408 5649849

14:20:00  97311 5647409

14:40:01  97418 5653711

15:00:00  97338 5648982

15:20:00  97333 5648993

Average  98516 5654784

11:49:38 sml_mem  alloc fail lg_mem  alloc fail ovsz_alloc fail

13:20:00 4178176 3572465   0 38477824 32137880   0  14663680   0

13:40:01 16572672 10204085   0 99106816 80782488   0  15310848

  0

14:00:00 16589056 10261693   0 99106816 80797968   0  15343616 

 0

14:20:00 16589056 10259613   0 99106816 80736600   0  15343616

  0

14:40:01 16589056 10260061   0 99106816 80820088   0  15343616  

0

15:00:00 16589056 10267477   0 99106816 80902432   0  15343616

  0

15:20:00 16589056 10274757   0 99106816 80864920   0  15343616 

  0

Average 14813733 9300022   0 90445528 73863192   0  15241801 

 0

  在可能的情況下,對上面的輸出進行了剪裁,以限制所顯示的資料量(比如,並沒有顯示所有磁碟的統計資訊)。有關 SAR 的更詳細的資訊,請檢視參考資料部分和您的系統中的 manual 頁面。

  結束語

  儘管在執行遲緩的 UNIX 系統和您能夠提取的統計資訊之間可能並不存在直接的關聯,但在發現系統執行遲緩的時候,第一件事就應該是收集儘可能多的資訊。究竟是應該主動地(透過 ps、uptime 和其他工具)還是被動地(透過 SAR 或 top)來完成這項工作,這取決於實際情況。有了這些資訊,您應該可以判斷 UNIX 系統之所以執行遲緩,到底是因為負載過重(CPU 超負荷使用)、實體記憶體太少(大量的交換工作),還是存在失控程式(單個程式佔用大量的 CPU 時間)的問題。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-941430/,如需轉載,請註明出處,否則將追究法律責任。

相關文章