Linux下Jmeter+nmon+nmon analyser實現性能監控及結果分析

一、概述

  前段時間講述了Jmeter利用插件PerfMon Metrics Collector來監控壓測過程中伺服器資源的消耗,一個偶然機會,我發現nmon這個

工具挺不錯,和Jmeter插件比起來,nmon記錄的資訊更加全面一些。

  nmon,一款開源性能監控工具,用於監控linux系統的資源消耗資訊,並能把結果輸出到文件中,然後通過nmon_analyser工具產生

數據文件與圖形化結果。

二、nmon及nmon analyser的下載安裝

  nmon下載地址://nmon.sourceforge.net/pmwiki.php

  nmon analyser下載地址://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 : 停止並退出 Nmon
  • h : 查看幫助
  • 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 性能的免費工具

  //www.ibm.com/developerworks/cn/aix/library/analyze_aix/index.html  

  nmon analyser—-生成 AIX 性能報告的免費工具

  //www.ibm.com/developerworks/cn/aix/library/nmon_analyser/index.html