一、概述
前段時間講述了Jmeter利用外掛PerfMon Metrics Collector來監控壓測過程中伺服器資源的消耗,一個偶然機會,我發現nmon這個
工具挺不錯,和Jmeter外掛比起來,nmon記錄的資訊更加全面一些。
nmon,一款開源效能監控工具,用於監控linux系統的資源消耗資訊,並能把結果輸出到檔案中,然後通過nmon_analyser工具產生
資料檔案與圖形化結果。
二、nmon及nmon analyser的下載安裝
nmon下載地址:http://nmon.sourceforge.net/pmwiki.php
nmon analyser下載地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Nmon-Analyser
nmon根據自己系統版本下載對應的安裝包,本次測試使用的是 nmon16m_helpsystems.tar.gz ,nmon analyser下載最新的安裝包,
本次測試使用的是 nmon_analyser_v66.zip 。
1.將下載的nmon安裝包上傳到Linux新建目錄並解壓
[test@node06 ~]$ cd /usr/local [test@node06 local]$ mkdir nmon [test@node06 local]$ cd nmon [test@node06 nmon]$ tar -zxvf nmon16m_helpsystems.tar.gz
2.根據自己系統的版本,給命令賦予可執行許可權
1 [test@node06 nmon]$ cat /etc/redhat-release 2 CentOS release 6.9 (Final) 3 [test@node06 nmon]$ chmod +x nmon_x86_64_centos6
3.在命令列輸入 ./nmon_x86_64_centos6 即可開啟nmon介面
在上面的互動式視窗中,可以使用nmon 快捷鍵來顯示不同的系統資源統計資料:
q
: 停止並退出 Nmonh
: 檢視幫助c
: 檢視 CPU 統計資料m
: 檢視記憶體統計資料d
: 檢視硬碟統計資料k
: 檢視核心統計資料n
: 檢視網路統計資料N
: 檢視 NFS 統計資料j
: 檢視檔案系統統計資料t
: 檢視高耗程式V
: 檢視虛擬記憶體統計資料v
: 詳細模式
此時,我們可以通過快捷鍵來調取關心的系統資源進行顯示,該種方式顯示資訊實時性強,能夠及時掌握系統承受壓力下的執行情況。
三、配置nmon的環境變數
完成以上的配置後,已經可以正常使用nmon了。但是,大家有沒有發現一個問題,那就是我們想使用nmon時必須找到該命令
的詳細路徑才能使用,這樣就很不方便了。此時,我們需要將nmon的命令新增到系統環境變數中去,以後我們就可以在任何地方
使用該命令。
1.修改啟動檔名稱,讓名稱簡單化,修改完成執行一次試試
[test@node06 nmon]$ mv nmon_x86_64_centos6 nmon
[test@node06 nmon]$ ./nmon
2.在命令列輸入 vim /etc/profile ,將以下內容貼上到文字末尾,路徑要改為自己的安裝路徑
PATH=$PATH:/usr/local/nmon
export PATH
3.在命令列輸入 source /etc/profile 使配置生效,此時,可以在任意目錄執行 nmon 命令來啟動nmon。
四、使用nmon監控Jmeter壓測期間的系統資源消耗情況
1.在nmon目錄下新建logs資料夾,用來存放監控檔案
[test@node06 ~]$ cd /usr/local/nmon/
[test@node06 nmon]$ mkdir logs
2.在命令列輸入執行命令 nmon -s 1 -c 80 -f -m /usr/local/nmon/logs
引數說明: -s 1 每隔n秒抽樣一次,這裡為1秒 -c 80 取出多少個抽樣數量,這裡為80,即監控=1*80/60=1分鐘20秒 -f 按標準格式輸出檔名稱:<hostname>_YYMMDD_HHMM.nmon -m 指定監控檔案的存放目錄,-m後跟指定目錄,如果不指定目錄會在該命令的源目錄下生成相應的監控檔案
此命令啟動後,會在我們指定的目錄下生成監控檔案,並持續寫入資源資料,直至80個監控點收集完成。在此期間,測試人員
不需要去手動干預。如果想停止監控,查詢程式號,然後殺死該程式即可。
[test@node06 ~]$ ps -ef|grep nmon test 8863 1 0 17:05 pts/1 00:00:00 nmon -s 1 -c 120 -f -m /usr/local/nmon/logs/ test 9111 25160 0 17:07 pts/1 00:00:00 grep nmon [test@node06 ~]$ kill 8863 -bash: kill: (8863) - No such process
這裡因為nmon已執行結束,所以當我kill的時候會提示 No such process 。
3.執行Jmeter指令碼,直至指令碼執行結束
本次壓測只為了講述使用流程,測試結果中TPS不具實際意義,為避免不必要的爭議,這裡將其馬賽克了。
五、檢視和分析壓測結果
1.將生成的監控檔案下載到本地
2.將本地的 nmon_analyser_v66.zip 解壓,解壓後的資料夾內有.pdf和.xlsm兩個檔案,我們開啟.xlsm檔案。
3.點選Analyse nomn data按鈕,將下載到本地的監控檔案新增進去,最後會生成一個.xlsx檔案,這個檔案裡就是我們需要的資料包告。
注意:nmon analyser需要藉助Excel的巨集,WPS預設沒有安裝巨集,即使安裝了外掛也容易出現異常情況,建議使用Microsoft Excel工作表。
巨集語言 Visual Basic for Application(VBA). Visual Basic是windows環境下開發應用軟體的一種通用程式設計語言,功能強大,簡便易
用。VBA是它的一個子集,可以廣泛地應用於Microsoft公司開發的各種軟體中,例如Word、Excel、Access等。
4.需要關注的一些資料
1)CPU_ALL,是伺服器cpu使用率的詳細資料。
User%:顯示在使用者模式下執行的程式所使用的 CPU 百分比
Sys%:顯示在核心模式下執行的程式所使用的 CPU 百分比
Wait%:顯示等待 IO 所花的時間百分比
Idle%:顯示 CPU 的空閒時間百分比
有效行:由於nmon啟動時間未必是應用平穩的時間,同時nmon監控時間段也許比應用施壓的要長。所以nmon的結果裡常常存在
一些明顯不合理的資料,比如前幾次結果的CPU等佔用明顯低於中段的平均資料,或者後面幾次取樣結果很小,對於這樣的資料我們
在分析的時候要予以過濾。
2)MEM,是伺服器記憶體使用率的概況。
在MEM表裡面使用如下公式計算出每行的記憶體使用率並進行取平均:
(Memtotal - Memfree - cached - buffers)/Memtotal * 100即( =(B2-F2-K2-N2)/B2*100)
通過分析記憶體使用率的趨勢,可定位是否記憶體洩露情況。
有人看到記憶體使用率是99%,就認為記憶體用滿了,並沒有區分記憶體分頁是什麼型別,這樣武斷的說記憶體用滿了是不科學的。在AIX上
主要關注的是計算記憶體佔整個實體記憶體的百分比,linux上主要關注的是active記憶體佔整個實體記憶體的百分比。
3)Disk_SUMM,總體disk讀、寫以及I/O操作
Disk Read kb/s 每個磁碟執行取樣資料;(磁碟裝置的讀速率)
Disk Write kb/s 每個磁碟執行取樣資料;(磁碟裝置的寫速率)
IO/sec 每秒進行的IO數(一次IO就是控制操作一次讀或寫,IO塊就是讀或寫的大小),圖中為上方黑色的線,報告中寫的是這個引數的值
4)NET,網路
Total read 每秒接收到的千位元組的數目,如圖藍色部分
Total write 每秒傳送的千位元組的數目,如圖橙色部分
網路=Total read-Total write
網路的指標一般要根據裝置來確定,百兆網路卡的意思是每秒能夠傳輸的網路流量是100Mbps,即最大的下載速度是12.5MB/s,一般伺服器是千兆網路卡,即125MB/s
參考資料:
nmon 效能:分析 AIX 和 Linux 效能的免費工具
https://www.ibm.com/developerworks/cn/aix/library/analyze_aix/index.html
nmon analyser----生成 AIX 效能報告的免費工具
https://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/index.html