歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> UNIX系統調優經典文章

UNIX系統調優經典文章

日期:2017/3/3 15:25:58   编辑:Unix基礎知識

導致系統運行遲緩的原因

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

  • 進程太多。您的系統可能僅僅只是同時運行了太多的應用程序,或者正在運行少量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來確定最大負載。例如,一個4CPU的系統可以承受的最大平均負載為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時間)的問題。

  • Copyright © Linux教程網 All Rights Reserved