如果你想從頭學習Jmeter,可以看看這個系列的文章哦
https://www.cnblogs.com/poloyy/category/1746599.html
前言
- 做效能測試,伺服器監控是至關重要的,前面也講了通過 ServerAgent 去監控伺服器
- 這一篇博文將詳細講解 nmon 監控工具
nmon 官方介紹
- nmon是一種在 AIX 與各種 Linux 作業系統上廣泛使用的監控與分析工具
- 它能在系統執行過程中實時地捕捉系統資源的使用情況,記錄的資訊比較全面
- 它可將伺服器系統資源耗用情況收集起來並輸出一個特定的檔案,並可利用 excel 分析工具(nmon analyser)進行資料的統計分析
nmon 可監控的資料型別
- CPU使用率
- 記憶體使用情況
- 磁碟介面卡
- 檔案系統中的可用空間
- 頁面空間和頁面速度
- 非同步I/O,僅適用於AIX
- 網路檔案系統(NFS)
- 磁碟 I/O 速度、傳輸和讀/寫比率
- 伺服器詳細資訊和資源
- 核心統計資訊
- 消耗資源最多的程式
- 執行佇列資訊
nmon 特點
- nmon 執行不會佔用過多的系統資源,通常情況下CPU利用率不會超過 2%
- 功能強大,監控資料型別全面
- 結合grafana之類的儀表圖,可以更直觀的實時展示所監控的資料
- 移植性、相容性較好
- 無人值守監控
- 可以實時檢視監控結果,也可以測試結束後本地檢視監控結果
nmon 在做效能測試時的劣勢
不能像 ServerAgent 一樣整合到 Jmeter 中檢視監控結果
Linux 下安裝並執行 nmon
檢查安裝環境
# 檢視作業系統的資訊 uname -a # 檢視linux發行版本 lsb_release -a
下載 nmon
方式一
官方地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
通過 FTP 上傳到伺服器目錄下
方式二
伺服器直接敲命令列
wget http://sourceforge.net/projects/nmon/files/nmon16e_mpginc.tar.gz
這種方式無法下最新版的
百度雲下載連結
包含了 nmon 安裝包和分析資料工具包
連結:https://pan.baidu.com/s/1WHmlf-Em3FfKbUUa_GWi6A 提取碼:w6gy
解壓
tar -zxvf nmon16m_helpsystems.tar.gz
檢視解壓後的檔案
執行 nmon
我的系統是 x86_64 centos8,敲
./nmon_x86_64_centos8
常用 nmon 快捷命令
- q : 停止並退出 nmon
- h : 檢視幫助
- c : 檢視 CPU 統計資料
- m : 檢視記憶體統計資料
- d : 檢視硬碟統計資料
- k : 檢視核心統計資料
- n : 檢視網路統計資料
- N : 檢視 NFS 統計資料
- j : 檢視檔案系統統計資料
- t : 檢視高耗程式
- V : 檢視虛擬記憶體統計資料
- v : 詳細模式
按多個快捷命令可以同時顯示多項監控結果哦
nmon 命令列引數
啟動 nmon 時,也可以指定一些引數
引數 | 作用 |
-f | 監控結果以檔案形式輸出,預設:機器名_日期_時間.nmon |
-F | 和 -f 一樣作用,不過要指定輸出檔名 |
-s | 取樣頻率,單位秒 |
-c | 取樣次數 |
-m | nmon 檔案儲存的目錄 |
-T | 顯示資源佔用率高的程式 |
命令列栗子
./nmon -f -t -s 10 -c 6 -m /data/nmon
每 10s 採集一次系統資源資料,共採集 6 次(1 min 內收集 6 次),將最終 nmon 檔案生成在 /data/nmon 目錄下
將這個 .nmon 檔案傳輸到本地,用於後續的結果分析
重點
- 一般來說不建議對穩定性測試(壓力測試)使用 nmon 監控,因為生成的 nmon 檔案超過10M時,分析工具會由於記憶體不足導致報錯
- 如果必須進行的話,建議加大采樣頻次,降低取樣次數(低於330次)
檢視 nmon 監控結果
nmon_analyser 介紹
- nmon 監控捕獲的資訊,一般用 nmon_analyser 來進行分析
- nmon_analyser 由 IBM 提供, 使用 excel 的巨集命令分析載入生成 excel 圖表,展示資源佔用的各項資訊
下載nmon_analyser
官方:http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser
百度雲連結:https://pan.baidu.com/s/1WHmlf-Em3FfKbUUa_GWi6A 提取碼:w6gy
解壓後發現有兩個檔案
- psd:說明文件
- xlsm:巨集檔案,分析工具
開啟 nmon analyser v66.xlsm
記住一定要通過 office 或者 wps 用 excel 的方式開啟哦,且需要啟動了巨集
解決巨集啟動失敗的情況
開啟 .nmon 檔案
點選 Analyze nmon data,選擇 nmon 檔案
檢視監控結果資料
nmon 監控結果圖表分析
分析結果檔案為一個excel表格,裡面分為 SYS_SUMM、CPU_ALL、MEM、DISK_SUMM 等多個標籤頁,每個標籤頁都有該主題下監控的明細資料和對應的統計圖表
每個標籤頁都展示了對某一指標如CPU、記憶體、網路、I/O的詳細監控資料
系統彙總介面:SYS_SUMM
頁面顯示項
- 主機名
- 執行日期
- 系統 cpu 使用情況(藍線)
- 系統 I/O 情況(粉紅線)
- 左縱軸為系統 cpu(user%+sys%)使用率
- 橫軸為執行時長
- 右縱軸為系統磁碟傳輸(Disk xfers)
- 座標下側為統計資訊:系統 I/O 情況(一個採集間隔內的平均值、最大值、出現最大值的時間),系統CPU使用情況等
引數 |
說明 |
Avg disk tps during an interval |
採集間隔內磁碟平均I/O次數該值等於Sheet DISK_SUMM中IO/sec列的平均值 |
Max disk tps during an interval |
採集間隔內磁碟最大I/O次數該值等於Sheet DISK_SUMM中IO/sec列的最大值 |
Max disk tps interval time |
顯示磁碟最大I/O所在時間點 |
Total number of Mbytes read |
採集間隔內磁碟讀的總兆位元組數 |
Total number of Mbytes written |
採集間隔內磁碟寫的總兆位元組數 |
Read/Write Ratio |
讀寫比率 |
User% |
採集間隔內所有CPU在User Mode下的Time佔比(Avg、Max) |
Sys% |
採集間隔內所有CPU在System Mode下的Time佔比(Avg、Max) |
Wait% |
採集間隔內所有CPU處於空閒且等待I/O完成的時間比例(Avg、Max) |
Idel% |
採集間隔內所有CPU處於空閒Time的佔比(Avg、Max) |
CPU% |
CPU總體佔用情況(Avg、Max) |
重點
- 如果一個CPU被充分使用,CPU佔用時間配比應為User%(65-70%),Sys%(30-35%),Idel%(0-5%)
- 如果 Sys% 佔比過大說明系統程式本身佔領大部分 cpu 資源,可考慮系統是否存在過多殭屍程式或者系統程式存在死迴圈等原因
- CPU Wait% 佔比過大說明可能 IO 或記憶體方面存在瓶頸,可能是由於記憶體不夠而引起頻繁的的資料交換
系統資訊:AAA
資訊主要包括:執行命令,主機CPU數,作業系統核心版本資訊,主機名等資訊
系統詳細資訊:BBBP
頁面資訊主要包括:作業系統版本,主機磁碟資訊,主機CPU型號、主頻資訊,記憶體資訊,網路卡資訊等
CPU使用情況:CPU_ALL,CPU_SUMM,CPU001...
包括主機 CPU 使用情況彙總以及每個 CPU 的執行情況。
此處重點關注 CPU_ALL 頁面
CPU_ALL 頁面可以看到如下圖的CPU整體上在每個監控點的資料,包括 User%、Sys%、Wait%、Idle%、Steal%、CPU% 以及 CPUs( cpu 個數)及對應圖表
CPU-ALL
引數說明
引數 | 說明 |
CPU Total | 執行間隔時間列表 |
User% | 採集間隔內所有CPU在User Mode下的Time佔比(Avg、Max) |
Sys% |
採集間隔內所有CPU在System Mode下的Time佔比(Avg、Max) |
Wait% | 採集間隔內所有CPU處於空閒且等待I/O完成的時間比例(Avg、Max) |
Idel% | 採集間隔內所有CPU處於空閒Time的佔比(Avg、Max),此值和User%,Sys%,Wait%,Steal%之和等於1 |
CPU% | CPU總體佔用情況,這個值通常等於User%+Sys% |
CPUs | CPU核數,即作業系統是多少核的 |
磁碟讀寫情況
共有六個標籤可檢視磁碟情況
- DISK_SUMM
- DISKBSIZE
- DISKBUSY
- DISKREAD
- DISKWRITE
- DISKXFER
磁碟的讀、寫及I/O統計資訊,系統各磁碟分割槽的讀寫情況。此處重點關注 DISK_SUMM 即可
DISK_SUMM
DISK_SUMM按採集時間顯示所有磁碟和分割槽的Read/Write的速率(KB/s)和所有磁碟和分割槽的I/O率。
引數說明
引數 | 說明 |
Disk total KB/s | 執行間隔時間列表 |
Disk Read KB/s | 採集間隔內磁碟裝置的讀速率 |
Disk Write KB/s | 採集間隔內磁碟裝置的寫速率 |
IO/sec | 採集間隔內磁碟整體平均每秒IO數 |
記憶體情況:MEM
引數說明
引數 | 說明 |
memtotal | 實體記憶體總大小,單位MB |
swaptotal | 虛擬記憶體(即交換空間)的總大小 |
memfree | 剩餘實體記憶體大小 |
swapfree | 剩餘虛擬記憶體大小 |
cached | 實體記憶體中被cache佔用的快取大小 |
active | 在活躍使用中的記憶體大小 |
buffers | 檔案系統緩衝區的大小 |
swapcached | 虛擬記憶體中被cache佔用的快取大小 |
inactive | 不常使用的記憶體大小 |
系統網路情況:NET,NETPACKET
反映系統的網路執行情況,系統各個網路介面卡讀寫的資料包數
NET頁面顯示系統中每個網路介面卡的資料傳輸速率(千位元組/秒)
引數說明
引數 | 說明 |
Network I/O | 執行間隔時間列表 |
Total-Read | 網路介面卡每秒接收的資料包總大小(KB/s) |
Total-Write(-ve) | 網路介面卡每秒傳送的資料包總大小(KB/s) |
系統程式:PROC
反映系統執行執行緒及等待切換的執行緒平均數
採集時間:ZZZZ
記錄nmon工具採集系統資訊的時間點