nmon是一款開源性能監控工具,用於監控linux系統的資源消耗信息,並能把結果輸出到文件中,然后通過nmon_analyser工具產生數據文件與圖形化結果。因為它免費,體積小,安裝簡單,耗費資源低,廣泛應用於AIX和Linux系統。
一、nmon下載
我們在下載前首先查看Linux系統內核版本,因為不同的Linux版本,Nmon對應的版本也不同,Linux版本必須Nmon版本一一對應
1.查看Linux內核方法一
[mrjade@localhost nmon16d]$ cat /proc/version
Linux version 5.3.0-28-generic (buildd@lcy01-amd64-009) (gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1)) #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020
內核版本5.3.0-28-generic
2.查看Linux內核方法二
[mrjade@localhost nmon16d]$ uname -a
Linux linux 5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
5.3.0-28-generic –內核版本
3.查看Linux內核方法三:直接問開發或者運維,簡單粗暴
4.下載地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download
二、nmon命令
./nmon_x86_64_centos7 -f -s 10 -c 60 -m ./log/
命令的含義是: -f :按標准格式輸出文件名稱:<hostname>_YYYYMMDD_HHMM.nmon -t :輸出最耗資源的進程 -s :每隔n秒抽樣一次,這里為10秒 -c :取出多少個抽樣數量,這里為采集 60 次,即監控 = 10*60 = 600秒 = 10分鍾
-m : 報告輸入路徑 nmonreport:監控記錄的標題 hostname:主機名
三、nmon性能結果報告分析
1.下載nmon analyser(用於將Nmon采集的數據轉換成可視化圖表)
2.雙擊打開nmon analyser v61.xlsm,切記不要用WPS,因為WPS不支持宏,點擊Analyze nmon data按鈕,,選擇.nmon文件
(1)SYS_SUMM【服務器資源使用率匯總】
服務器資源使用率匯總表:整體信息頁面,顯示當前服務器的總體性能情況
- 【正上方】Samples、First、Last:采集點樣本統計。
Samples:采集點樣本總數,折線圖中出現的采集點統計總數。
First:第一個采集點的采集時間。
Last:最后一個采集點的采集時間。
- 【正中間】折線圖:[藍線:CPU%]為cpu占有率變化情況;[紫線:IO/sec]為磁盤IO的變化情況。
IO/sec:[紫線]僅顯示磁盤IO/sec的圖,不包括Network的I/O。每秒鍾輸出到物理磁盤的傳輸次數。
- 【左下角】Disk tps statistics:磁盤的總體數據,包括如下幾個:
1、Avg tps during an interval:
顯示采集間隔內磁盤平均I/O次數,該值等於Sheet DISK_SUMM中IO/sec列的平均值。
每個間隔時間內,平均每秒IO數,也可以理解為提交處理的次數。
2、Max tps during an interval:
顯示采集間隔內磁盤最大I/O次數,該值等於Sheet DISK_SUMM中IO/sec列的最大值。
每個間隔時間內,每秒最大IO次數。
3、Max tps interval time:
顯示磁盤最大I/O所在時間點。
最大傳送次數出現的時間點。
4、Total number of Mbytes read:
顯示采集間隔內磁盤讀的總兆字節數,可能是nmon的bug,該值並不准確,並且使用LVM划分的虛擬磁盤可能會存在重復統計。
整個監控時間內讀的字節數。
5、Total number of Mbytes written:
顯示采集間隔內磁盤寫的總兆字節數,該值並不准確,理由同上。
整個監控時間內寫的字節數。
6、Read/Write Ratio:
顯示 Total number of Mbytes read/ Total number of Mbytes written 的值。
實時讀寫比率。
- 【右下角】CPU:CPU的總體數據,包括如下幾個:
// ********************* 橫行:CPU各項指標 **************************** //
1、User%:顯示采集間隔內所有CPU在User Mode下的Time占比。
2、Sys%:顯示采集間隔內所有CPU在System Mode下的Time占比。
3、Wait%:顯示采集間隔內所有CPU處於空閑且等待I/O完成的時間比例。
4、Idle%:CPU空閑率,顯示采集間隔內所有CPU處於空閑Time的占比。
5、CPU%:cpu占有率,顯示采集間隔內所有CPU的(user%+system%)占比和。
// ****************** 縱列:CPU各項指標數據中的特殊值 ******************* //
1、Max:cpu各項指標數據中的最大值。
2、Avg:cpu各項指標數據中的整體平均值。
3、Max:Avg:cpu各項指標數據的最大值和平均值的比率。
1、Wait% 是 CPU 空閑狀態的一種,當CPU處於空閑狀態而又有進程處於 D 狀態(不可中斷睡眠)時,
系統會統計這時的時間,並計算到Wait%里。
2、Wait% 不是一個時間值,而是時間的比例,因此在同樣 I/O Wait 時間下:
服務器 CPU 越多,Wait% 越低,它體現了 I/O 操作與計算操作之間的比例。
3、對 I/O 密集型的應用來說一般 Wait% 較高,且 Sheet PROC 中 Blocked 也較高,
這時需關注是什么導致了過多的進程等待。
(2)MEM
1.內存(MB)報表:本 sheet 主圖上顯示空閑實存的數量
1、在 MEM 表里面使用如下公式計算出每行的內存使用率並進行取平均:
(Memtotal - Memfree - cached - buffers)/Memtotal * 100 即 =(C2-G2-L2-O2)/C2*100
統計后手動繪制拆線圖,如

2、通過分析內存使用率的趨勢,可定位是否內存泄露情況。
3、有人看到內存使用率是 99%,就認為內存用滿了,並沒有區分內存分頁是什么類型,這樣武斷的說內存用滿了是不科學的。
4、在 AIX 上主要關注的是計算內存占整個物理內存的百分比,linux 上主要關注的是 active 內存占整個物理內存的百分比。
2.圖表說明:
(3)CPU
Cpu使用率分為三部分,系統、用戶和等待,分別對應圖中紅色、藍色和灰色部分。 cpu使用率100%的情況,如果紅色占大部分,說明系統進程本身占據大部分cpu資源,可考慮系統是否存在過多僵屍進程或者系統進程存在死循環等原因;
如果藍色占大部分,說明用戶進程占用大量cpu資源,可考慮被壓系統是否壓力過大,或者被壓系統存在大量運算等消耗cpu資源的操作。