vmstat
Case #1:CPU & RAM 負載低
[root@deki ~]# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 60 163016 252108 363996 0 0 4 172 23 16 2 3 94 0 0
0 0 60 163016 252108 363996 0 0 0 60 1025 248 0 0 100 0 0
0 0 60 163016 252108 364000 0 0 0 0 1073 416 3 4 94 0 0
0 0 60 163016 252108 364000 0 0 0 0 1042 248 0 0 100 0 0
0 0 60 163016 252108 364000 0 0 0 54 1030 249 0 0 99 0 0
0 0 60 163016 252108 364000 0 0 0 0 1032 247 0 1 100 0 0
0 0 60 163016 252108 364000 0 0 0 0 1035 228 0 0 100 0 0
0 0 60 162892 252108 364000 0 0 0 12 1041 516 12 68 21 0 0
0 0 60 162892 252108 364000 0 0 0 0 1020 240 0 0 100 0 0
0 0 60 162892 252108 364000 0 0 0 42 1024 249 0 0 100 0 0
0 0 60 162892 252108 364000 0 0 0 0 1035 248 0 0 100 0 0
0 0 60 162892 252108 364000 0 0 0 2 1029 267 0 1 99 0 0
0 0 60 163016 252108 364000 0 0 0 0 1018 219 0 0 100 0 0
0 0 60 163016 252108 364000 0 0 0 12 1026 603 7 8 85 0 0
1 0 60 163016 252108 364004 0 0 0 0 1044 270 0 0 100 0 0
0 0 60 163016 252108 364004 0 0 0 0 1025 267 0 0 100 0 0
7 0 60 162272 252108 364004 0 0 0 54 1026 1127 8 14 78 0 0
Case #2: CPU 負載高,RAM 負載低
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
13 0 0 204372 46688 3261856 0 0 0 3146 2024 5151 18 82 0 0 0
15 0 0 204248 46708 3261900 0 0 4 3920 1919 5839 17 83 0 0 0
11 1 0 204248 46716 3261956 0 0 6 2940 1868 4863 19 81 0 0 0
16 1 0 209212 46736 3262004 0 0 4 5142 2194 5447 17 83 0 0 0
8 0 0 210332 46776 3262248 0 0 122 3002 2267 5818 15 85 0 0 0
6 0 0 210704 46808 3262300 0 0 0 3090 1982 4658 17 83 0 0 0
11 1 0 211076 46872 3262384 0 0 2 2986 2102 4890 17 83 0 0 0
9 0 0 210952 46884 3262408 0 0 2 0 1815 4891 18 82 0 0 0
6 0 0 210952 46896 3262440 0 0 0 2978 1588 4877 23 77 0 0 0
3 0 0 210828 46920 3262468 0 0 0 2968 1859 4424 18 82 0 0 0
4 0 0 211324 46932 3262580 0 0 0 0 2182 5391 16 84 0 0 0
4 0 0 211324 46976 3262000 0 0 0 2992 1638 3973 17 83 0 0 0
3 0 0 211324 47008 3262060 0 0 0 5190 1838 4707 19 81 0 0 0
9 0 0 211324 47008 3262072 0 0 0 0 1688 5711 39 61 0 0 0
7 0 0 208968 47020 3262072 0 0 0 2974 1389 4076 24 76 0 0 0
2 0 0 206364 47020 3262080 0 0 0 0 1053 3283 40 60 0 0 0
11 0 0 204628 47028 3262080 0 0 0 3020 1995 6525 32 68 0 0 0
4 0 0 199668 47044 3262084 0 0 0 2946 1813 4977 21 79 0 0 0
4 0 0 193344 47064 3262120 0 0 0 2962 2455 6091 15 85 0 0 0
5 0 0 191608 47092 3262316 0 0 0 2980 2255 5560 18 82 0 0 0
10 0 0 188632 47132 3262248 0 0 0 2960 2591 6128 15 85 0 0 0
5 0 0 186524 47168 3262448 0 0 0 3026 2210 5305 19 81 0 0 0
3 0 0 186276 47192 3262328 0 0 0 4 1919 4915 24 76 0 0 0
4 0 0 186028 47216 3262372 0 0 0 2994 1878 4399 19 81 0 0 0
5 0 0 185780 47244 3262412 0 0 0 2970 2001 4915 18 82 0 0 0
5 0 0 185532 47276 3262400 0 0 0 3128 2159 5427 16 84 0 0 0
3 0 0 185532 47284 3262372 0 0 0 0 2173 5393 16 84 0 0 0
3 0 0 185408 47320 3262396 0 0 0 2966 2247 5286 15 85 0 0 0
4 0 0 185284 47340 3262464 0 0 0 2958 2237 5438 15 85 0 0 0
Case #3:連接 storage 與 SAN switch 的光纖線發生異常,時好時壞。
異常狀況:DB 效能突然變差
狀況分析:
- Linux 的 top 指令顯示 Load Average 的值很容易高於 15 以上甚至更高。
- 檢視 dmesg 與 messages 無任何硬體異常訊息記錄。
- 幾乎所有外部應用程式開始連線後,整個系統就出現超載狀況。
- 分析 Memory, 無 Disk Swapping 現象。
- 分析 CPU,仍有許多 Idle 現象。
檢視 vmstat 輸出資訊如下:
- CPU - wa 始終大於 0 甚至更高
- IO - bi, bo 常有兩者都是 0,bi 偶爾會有高數值出現
NOTE: 當系統有 I/O 行為時,正常狀態 bi 或 bo 應該都是連續有數值,不應該會是 0
原因分析:透過 vmstat 資訊,當系統有 I/O 行為時,正常狀態的 bi 或 bo 應該是連續有數值,不應該出現 0。
Tips:
- r - 執行中或等待執行的程序數量
- b - 未中斷的休眠中程序數量,例如等待 IO,或正在作 Swaping
- swpd - 目前已使用的虛擬記憶(KB)
- free - 目前尚未被使用的實體記憶體(KB)
- buff - 目前在暫存區用於讀/寫操作的實體記憶體(KB)
- cache - 目前對應程序位址空間的實體記憶體(KB)
- si - 從 swap disk 讀取到 RAM(KB)
- so - 從 RAM 寫入 swap disk(KB)
- bi - 從檔案系統或 swap disk 讀取的分頁區塊
- bo - 從 RAM 寫到 swap disk 的分頁區塊
CPU:
- us - User 佔用 CPU %
- sy - System 佔用 CPU %
- id - Idle 閒置 CPU %
- wa - 因為 I/O Waiting CPU %
- st - 虛擬機佔用 CPU % (kernel 2.6.1 以後才支援)
結果分析
- r 值若經常大於 1 甚至更大的數字,且 id 常小於 40%,表示 CPU 負荷過重。
- 當主程序正在運行時,有較少的 free 是好事,這表示 cache 使用更有效率,除非是有不斷的寫入 swap disk (so,bo)。
- cache 值如果較大,且 bi 值小,表示檔案系統效率好。
- 如果 swapd 數值大於 0,但 si, so 都顯示 0,此時系統效能還是正常的。
- 如果 bi, bo 出現較大的數值,但 si, so 卻維持數值 0,表示系統 IO 負載過重,要檢查檔案系統或硬碟有無異常。
- 如果 bi, bo 與 si, so 同時呈現較大的數值,表示記憶體 swapping 頻繁,RAM 太小。
- kswapd 程序服務是負責確保閒置的記憶體可被釋放,每次啟動掃描會嘗試釋放 32 個 pages,並且一直在重複這個程序,直到閒置記憶體的數值高於 pages_high(核心參數)。
- pdflush 程序服務是將記憶體中的內容與檔案系統進行同步操作,確保記憶體資料寫到硬碟。
- bi 或 bo 出現 0 的次數太過頻繁,除非系統處於閒置狀態,否則應該檢查 I/O 方面的硬體裝置,例如硬碟、storage、HBA 卡甚至是光纖線。
Case #4:NetApp storage 發生 IO bottleneck
異常狀況: 某資料庫在特定時段,AP 發生 SQL 嚴重遲緩。
狀況分析:
- 已確認主機的 CPU、Memeory 資源足夠
- 已確認資料庫服務無異常日誌記錄與 AP 程式無異動
- 問題發生當下,以 nmon 檢查主機 IO,發現 Read 使用率持續 100%,但 IOPS 平均數值顯示非常低 (不到 100 KB)
- 以 vmstat 檢查 bi 與 bo,在有 IO 行為發生時,正常情況下,數值最高可達 數萬到10幾萬,但異常發生時,數值平均都維持在 100 - 200 或更低數值。
No Comments