Linux 系統負載查詢及分析說明
阿新 • • 發佈:2018-11-26
Linux 系統出現宕機或卡頓時,可以參閱如下步驟進行整體排查:
- 檢查伺服器程序與服務否佔用了過多記憶體,或者記憶體沒有正常釋放,導致出現記憶體溢位,系統宕機。
- 檢查 /var/spool/cron 等系統配置中是否有 cron(計劃任務、自動任務)在對應時間段內執行。
- 檢查 Web 伺服器的引數是否超過了伺服器的效能。比如最大連線數過高等。
- 檢查程序數是否非常高,導致服務癱瘓,機器假死。
- 檢視系統日誌中是否有異常記錄。
- 檢查磁碟是否有壞塊。
- 核心消耗過大,檢視是否有瞬間資源佔用過大的程序或服務。
- 檢視是否有異常程序,是否存在被攻擊或入侵症狀。
使用 sar 檢視 Linux 系統各項資源使用情況
sar 是System Activity Reporter(系統活動情況報告)的縮寫。sar 工具對系統狀態進行取樣後,=通過計算資料和比例來表達系統當前的執行狀態。其特點是可以連續對系統取樣,獲得大量的取樣資料。其取樣資料和分析結果可以存入檔案,所需的負載很小。
sar 是 Linux 系統中較為全面的效能分析工具,可以從多個方面對系統的活動進行監控和報告,包括檔案讀寫情況、系統呼叫使用情況、串列埠、CPU 效率、記憶體使用情況、程序活動及 IPC 有關的活動情況等等。
- 檢視 CPU 負載
用法:sar -u 1 5
示例輸出:sar -u 1 5 Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 07/04/2016 _x86_64_ (1 CPU) 10:16:35 AM CPU %user %nice %system %iowait %steal %idle 10:16:36 AM all 14.14 0.00 1.01 0.00 0.00 84.85 10:16:37 AM all 14.14 0.00 0.00 1.01 0.00 84.85 10:16:38 AM all 0.00 0.00 1.01 0.00 0.00 98.99 10:16:39 AM all 0.00 0.00 0.00 0.00 0.00 100.00 10:16:40 AM all 1.00 0.00 0.00 0.00 0.00 99.00 Average: all 5.86 0.00 0.40 0.20 0.00 93.54
回顯說明:- %user:使用者模式下消耗的 CPU 時間的比例。
- %nice:通過 nice 改變了程序排程優先順序的程序,在使用者模式下消耗的 CPU 時間的比例。
- %system:系統模式下消耗的 CPU 時間的比例。
- %iowait:CPU 等待磁碟 I/O 導致空閒狀態消耗的時間比例。
- %steal:利用 Xen 等作業系統虛擬化技術,等待其它虛擬 CPU 計算佔用的時間比例。
- %idle:CPU 空閒時間比例。
- 檢視平均負載
用法:sar -q 1 60
示例輸出:sar -q 1 6 Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 07/04/2016 _x86_64_ (1 CPU) 10:23:13 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 10:23:14 AM 0 142 0.00 0.01 0.05 0 10:23:15 AM 0 142 0.00 0.01 0.05 0 10:23:16 AM 0 142 0.00 0.01 0.05 0 10:23:17 AM 0 142 0.00 0.01 0.05 0 10:23:18 AM 0 142 0.00 0.01 0.05 0 10:23:19 AM 0 142 0.00 0.01 0.05 0 Average: 0 142 0.00 0.01 0.05 0
回顯說明:
指定 -q 後,可以檢視執行佇列中的程序數、系統上的程序大小、平均負載等資訊。與其它命令相比,能檢視各項指標隨時間變化的情況。<ul> <li><span><span>runq-sz:執行佇列的長度(等待執行的程序數)。</span></span></li> <li><span><span><span>plist-sz:程序列表中程序(processes)和執行緒(threads)的數量。</span></span></span></li> <li><span><span><span><span>ldavg-1:最後 1 分鐘的系統平均負載。</span></span></span></span></li> <li><span><span><span><span><span>ldavg-5:過去 5 分鐘的系統平均負載。</span></span></span></span></span></li> <li><span><span><span><span><span><span>ldavg-15:過去 15 分鐘的系統平均負載。</span></span></span></span></span></span></li> </ul> </li>
- 檢視記憶體負載
用法:sar -r 1 3
示例輸出:sar -r 1 3 Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 07/04/2016 _x86_64_ (1 CPU) 10:27:34 AM kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 10:27:35 AM 275992 740664 72.85 181552 315340 362052 35.61 471216 115828 60 10:27:36 AM 276024 740632 72.85 181552 315340 362052 35.61 471220 115828 64 10:27:37 AM 276024 740632 72.85 181552 315340 362052 35.61 471220 115828 64 Average: 276013 740643 72.85 181552 315340 362052 35.61 471219 115828 63
回顯說明:- kbmemfree:該值和 free 命令中的 free 值基本一致,它不包括 buffer 和 cache 空間。
- kbmemused:該值和 free 命令中的 used 值基本一致,它包括 buffer 和 cache 空間。
- %memused:實體記憶體使用率,該值是 kbmemused 和記憶體總量(不包括 swap)的百分比。
- kbbuffers 和 kbcached:這兩個值和 free 命令中的 buffer 和 cache 一致。
- kbcommit:保證當前系統所需要的記憶體,即為了確保不溢位而需要的記憶體(RAM+swap)。
- %commit:該值是 kbcommit 與記憶體總量(包括swap)的百分比。
- 檢視頁面交換髮生狀況
用法:sar -W 1 3
示例輸出:sar -W 1 3 Linux 3.10.0-123.9.3.el7.x86_64 (iZ23pddtofdZ) 07/04/2016 _x86_64_ (1 CPU) 10:28:59 AM pswpin/s pswpout/s 10:29:00 AM 0.00 0.00 10:29:01 AM 0.00 0.00 10:29:02 AM 0.00 0.00 Average: 0.00 0.00
回顯說明:- pswpin/s:每秒系統換入的交換頁面(swap page)數量。
- pswpout/s:每秒系統換出的交換頁面(swap page)數量。
- 其它常見 sar 引數說明(區分大小寫)
<ul> <li><span><span>-A 彙總所有的報告</span></span></li> <li><span><span><span>-a 報告檔案讀寫使用情況</span></span></span></li> <li><span><span><span><span>-B 報告附加的快取的使用情況</span></span></span></span></li> <li><span><span><span><span><span>-b 報告快取的使用情況</span></span></span></span></span></li> <li><span><span><span><span><span><span>-c 報告系統呼叫的使用情況</span></span></span></span></span></span></li> <li><span><span><span><span><span><span><span>-d 報告磁碟的使用情況</span></span></span></span></span></span></span></li> <li><span><span><span><span><span><span><span><span>-g 報告串列埠的使用情況</span></span></span></span></span></span></span></span></li> <li><span><span><span><span><span><span><span><span><span>-h 報告關於buffer使用的統計資料</span></span></span></span></span></span></span></span></span></li> <li><span><span><span><span><span><span><span><span><span><span>-m 報告IPC訊息佇列和訊號量的使用情況</span></span></span></span></span></