如果你想從頭學習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工具采集系統信息的時間點
