搞系統、運維、數據庫的兄弟們應該都很清楚,常常需要查看系統運行的情況,簡單列幾項:
1、vmstat 命令
vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫,可對操作系統的虛擬內存、進程、CPU活動進行監控。他是對系統的整體情況進行統計,不足之處是無法對某個進程進行深入分析。通常使用vmstat 5 5(每隔5秒鐘生成一次數據,一共生成5次數據)命令測試。
[oracle@orahost ~]$ vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 0 876420 51128 1019032 0 0 0 2 1 1 0 0 100 0
0 0 0 876484 51128 1019032 0 0 0 37 1070 137 0 0 100 0
0 0 0 876484 51128 1019032 0 0 0 12 1201 137 0 0 100 0
0 0 0 876484 51128 1019032 0 0 0 22 1110 138 0 0 100 0
0 0 0 876484 51128 1019032 0 0 0 22 1163 136 0 0 100 0
說明(六部分):
(1)進程procs:
r:在運行隊列中等待的進程數 。
b:在等待io的進程數 。
(2)Linux 內存監控內存memoy:
swpd:現時可用的交換內存(單位KB)。
free:空閒的內存(單位KB)。
buff: 緩衝去中的內存數(單位:KB)。
cache:被用來做爲高速緩存的內存數(單位:KB)。
(3) Linux 內存監控swap交換頁面
si: 從磁盤交換到內存的交換頁數量,單位:KB/秒。
so: 從內存交換到磁盤的交換頁數量,單位:KB/秒。
(4)Linux 內存監控 io塊設備:
bi: 發送到塊設備的塊數,單位:塊/秒。
bo: 從塊設備接收到的塊數,單位:塊/秒。
(5)Linux 內存監控system系統:
in: 每秒的中斷數,包括時鐘中斷。
cs: 每秒的環境(上下文)轉換次數。
(6)Linux 內存監控cpu中央處理器:
us:用戶進程使用的時間 。以百分比表示。
sy:系統進程使用的時間。 以百分比表示。
id:中央處理器的空閒時間 。以百分比表示
假如 r經常大於 4 ,且id經常小於40,表示中央處理器的負荷很重。 假如bi,bo 長期不等於0,表示物理內存容量太小
2、free命令檢測內存狀況
注意查看SWAP使用情況
[oracle@orahost ~]$ free -m
total used free shared buffers cached
Mem: 2025 1170 855 0 49 995
-/+ buffers/cache: 125 1900
Swap: 4094 0 4094
3、iostat
報告計算機輸入/輸出設備的統計信息
[oracle@orahost ~]$ iostat -x
Linux 2.6.9-42.ELsmp (orahost.orahost) 04/02/2002
avg-cpu: %user %nice %sys %iowait %idle
0.01 0.00 0.02 0.01 99.96
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
hdb 0.00 0.62 0.00 0.29 0.11 7.27 0.05 3.64 24.81 0.00 1.66 0.65 0.02
幾個參數比較重要:
%util: 一秒中有百分之多少的時間用於 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的
svctm: 平均每次設備I/O操作的服務時間
await: 平均每次設備I/O操作的等待時間
avgqu-sz: 平均I/O隊列長度
如果%util接近100%,表明i/o請求太多,i/o系統已經滿負荷,磁盤可能存在瓶頸,一般%util大於70%,i/o壓力就比較大,讀取速度有較多的wait.同時可以結合vmstat查看查看b參數(等待資源的進程數)和wa參數(IO等待所佔用的CPU時間的百分比,高過30%時IO壓力高)。
await 的大小一般取決於服務時間(svctm) 以及 I/O 隊列的長度和 I/O 請求的發出模式。如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;如果 await 遠大於 svctm,說明 I/O 隊列太長,應用得到的響應時間變慢。
4、sar 命令
比如系統運行速度突然變慢,系統容易死機或者主機所帶的終端常出現死機,這時我們常常猜測,是硬盤空間太小,還是內存不足?I/O出現瓶頸,或者是系統的核心參數出了問題?這時,我們應該考慮使用系統給我們提供的sar命令來對系統作一個瞭解,
sar -u 5 3 對cpu利用率,每5秒採樣一次,連續採樣3次
[oracle@orahost ~]$ sar -u 5 3
Linux 2.6.9-42.ELsmp (orahost.orahost) 04/02/2002
06:45:34 PM CPU %user %nice %system %iowait %idle
06:45:39 PM all 0.00 0.00 0.10 0.10 99.80
06:45:44 PM all 0.00 0.00 0.00 0.00 100.00
06:45:49 PM all 0.00 0.00 0.00 0.00 100.00
Average: all 0.00 0.00 0.03 0.03 99.93
參數:
-A:所有報告的總和。
-u:CPU利用率
-v:進程、I節點、文件和鎖表狀態。
-d:硬盤使用報告。
-r:沒有使用的內存頁面和硬盤塊。
-g:串口I/O的情況。
-b:緩衝區使用情況。
-a:文件讀寫情況。
-c:系統調用情況。
-R:進程的活動情況。
-y:終端設備活動情況。
-w:系統交換活動。
(待續)