監視執行緩慢的系統

liypsky發表於2011-01-20

導致系統執行遲緩的原因

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

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

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

[@more@]選擇連線方法

如果您的計算機執行得特別慢,那麼第一個問題是如何連線到該計算機以便啟動監視程式。執行遲緩的計算機可能無法接受 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/678020/viewspace-1044921/,如需轉載,請註明出處,否則將追究法律責任。

相關文章