1. 程式人生 > >JMeter對伺服器效能監控--結果檢視和plugins外掛詳解

JMeter對伺服器效能監控--結果檢視和plugins外掛詳解

引言

我們對被測應用進行效能測試時,除了關注吞吐量、響應時間等應用自身的表現外,對應用執行所涉及的伺服器資源的使用情況,也是非常重要的方面,通過實時監控,可以準確的把握不同測試場景下伺服器資源消耗情況的變化,對於應用效能分析有著重要的作用,同時也是調整測試場景設計的重要依據。對於使用JMeter執行效能測試的朋友,可能大都知道jmeter-plugins中就有用於伺服器資源監控的外掛PerfMon Metrics Collector,同時也有不少同學會選擇類似nmon的獨立監控方案。

之所以決定寫這篇文章,一是因為在使用JMeter作為效能測試工具的情況下,使用專為其設計的外掛會更方便,二是對於普通網際網路公司的效能測試方案,這款外掛所提供的功能已經可以滿足其資源監控方面的大多數需求,而最重要的一點,是在技術群裡發現雖然很多同學知道或者在用這款外掛,但是對於一些概念和細節,並不瞭解,導致不能很好的滿足自己的需求,而現在網路上介紹這款外掛的部落格文章,大都是Quick Start式的入門文章,並不能解答這些同學的疑問。
注:本文使用的JMeter版本為當前最新release版本3.1。

基礎

1.2 PerfMon外掛使用

  • 使用:如圖2所示,在Listener中選擇PerfMon外掛,新增到測試計劃中,然後參考圖3進行配置,包括配置部署了ServerAgent的被測伺服器的IP、ServerAgent使用的埠、要獲取和展示的資源項等。測試啟動後
    圖2 使用PerfMon外掛
圖3 配置
  • 資料觀察和儲存:在使用GUI模式進行除錯時,測試啟動後,可以直接在對應視窗觀察到根據採集資料描繪的圖形。而要在使用NO GUI模式正式執行測試後,檢視監控資料,可以在設計測試計劃時在圖3的Filename位置配置資料要儲存的地址,它和儲存JMeter測試主資料的方式一樣,需要注意的是不要和JMeter測試主資料儲存到同一個檔案。在測試執行完成後,再在外掛介面載入這個檔案,即可顯示監控資料的圖形展示。

進階

從同事、技術群友們那裡,我瞭解到有不少同學對於PerfMon外掛展示的各個指標資料的含義,特別是單位並不是特別明確,所以先講一下這部分。另外對於資料曲線圖的展示,也有一些點值得說明。

2.1 指標

關於監控指標資料的疑惑,大多可以從PerfMon外掛的Metric parameter設定介面找到答案。我們知道對於伺服器如CPU、記憶體等每一個監控指標型別,都有多種資料從不同維度來體現資源使用情況,比如對於CPU,在Linux系統用top命令,就可以看idleusersystem等資料。

對於PerfMon外掛,可以通過Metric parameter來設定某種資源具體要收集和展示的資料,只是它的入口並不是很醒目,如下圖4右上的紅色箭頭所指,需要雙擊輸入框後,點選最後邊的按鈕開啟,開啟的介面如圖4中級紅色箭頭所指,雖然每種指標的具體配置項不同,但結構相同,都分為Primary Metrics

Additional Metrics等等,Primary是官方認為常用的,通常也是實際工作中更關心,更具有參考意義的指標項,Additional則是在一些特殊場景可能需要了解的指標項。


圖4 監控指標引數設定

這裡先簡單說一下幾種主要的資源型別的指標項,對應的圖就不貼了,太佔篇幅,影響閱讀:

  1. CPU
    • 對於各指標項,數值都是代表百分比,比如預設配置(combined)下在曲線圖中看到某個時間的數值是30,即代表此時總的cpu使用時間佔比為30%。
    • 有兩點比較有用的地方值得說明:一是在Scope區域,可以通過Per Process選項來獲取指定程序的CPU使用情況,二是在CPU Cores區域,我們可以選擇監控指定的單個Core。
  2. Memory
    • 各指標項中,usedperc(預設)和freeperc兩項的數值代表與總記憶體的百分比,其餘指標項的數值都是指記憶體大小,選中對應想,可以看到Metric Unit區域單位配置將變為可用,通常Mb會比較適合觀察。
    • 同樣,也可以選擇監控指定程序的資料
  3. Disk I/O:
    • 各指標項中,queue(預設)的數值代表等待I/O佇列長度,readswrites分別代表每秒處理的讀/寫次數,readbyteswritebytes顧名思義,代表每秒讀/寫的資料量,單位同樣在Metric Unit區域配置,通常Mb會比較適合觀察。
  • 如果有掛載多個儲存裝置,可以在Filesystem Filter區域指定要監控的裝置。

剩下的,就不一一說明了,參考前面幾項,我覺得理解其他資源型別的配置應該沒有問題了,至於具體指標項的含義,首先用不到的可以暫時不去了解,如果想要了解,請善用搜索。

2.2 曲線圖

  1. 使用策略

    • 如果測試場景的測試執行時間較長,採集的監控資料量比較大,為了在GUI模式檢視曲線圖時更方便、快捷,建議將各個監控指標項單獨使用一個PerfMon監聽器,從而配置不同的指標項資料儲存到不同的檔案中,測試執行完畢後,載入資料和資料檢視都會更快
    • 如果預計資料量不會太大,可以以伺服器為單位來劃分PerfMon監聽器。這樣可以方便的觀察到整個測試過程中,某臺伺服器各項資源使用情況的變化趨勢
    • 對於分散式服務、為了方便觀察各個節點的負載分佈、負載變化趨勢,可以考慮將同類型的節點放置到同一個PerfMon監聽器,以便對比觀察
  2. 數值

    • 當一個PerfMon監聽器中展示多種指標項的資料時,為了曲線圖的可觀察性,外掛會自動進行優化,如圖5所示,我們看到在CPU項和記憶體項都有個x10,代表曲線圖中展示的數值是在採集到的真實數值上放大了10倍,目的是為了保證不同資料項在同一座標系中展示時,各項都變化趨勢都能夠被觀察到。
      圖5 曲線圖
  3. 曲線圖配置

    • 外掛介面的Rows標籤頁可以調整要在曲線圖中展示的指標項
    • Setting標籤頁中常用的有:
      • use relative times用於配置曲線圖x軸表示相對時間(測試開始時為0)還是實際系統時間。
      • Auto-zoom rows for best fit預設勾選,則會有上一節講數值時提到的展示資料自動放大的功能,取消勾選則全部展示採集的實際數值。
      • Limit number of points in row to xx points:勾選後可以設定曲線圖展示的取樣點數量,我們的測試報告會有不同的角色檢視,其中一些角色可能不具備也不需要對監控資料的細節理解能力,此時我們提供的監控曲線圖應該是易讀的,如果按照實際的所有采樣點來渲染出曲線圖,可能會有很多偏離趨勢的噪點資料,這對於不瞭解的人來說可能會有很多疑惑,所以當我們有了分析結論,最後報告呈現的時候,可以考慮通過調整取樣點,來讓曲線圖更好的展示資源使用趨勢,消除其他不必要的資訊。
        圖6 曲線圖配置
      • Force maximum Y axis value to xx,實際上我更多會選擇不勾選,不勾選的情況下,外掛在描繪曲線圖的時候,會根據數值大小自動調整Y軸最大值,以達到更佳可讀性,如圖7和圖8,分別是不勾選,和勾選後設定最大值為100時的曲線圖效果,顯然圖7可以更容易的觀察到變化的細節。不過與上一項類似,可能在對外出具報告時,為了更少的解釋說明,可能需要某個指定的數值。
        圖7 不自定義Y軸
        圖8 自定義Y軸

2.3 自定義指標

  1. EXEC
    • 在外掛介面選擇指標型別時,可以看到一個EXEC選型,該選項允許我們在後面的Metric parameter中配置一個命令語句(該語句最終應該輸出單個數值),測試執行時,ServerAgent將執行該命令,同時外掛將接收ServerAgent捕獲的輸出數值。
    • 語法規則:EXEC所配置的語句需要按照一定的規則來填寫,先是給出命令的執行程式的位置,然後將具體的命令以及命令的引數作為,命令和命令引數都需要用冒號":"來隔開。比如/bin/sh:-c:free |grep Mem |awk '{pring $7}'
      • /bin/sh,代表命令的執行程式
      • -c,即/bin/sh-c選型,有-c選型的情況下,將從後面的字串按一定規則解析為命令和命令引數
      • 可以看到有用冒號分隔了執行程式/選型引數/命令語句
      • 對於windows,也類似,如C\:\Windows\System32\cmd.exe:/c:echo %RANDOM%
  2. TAIL
    • 如同Linux的tail命令,讀取檔案的最後一行,用在這裡,需要檔案每一行只包含一個單獨的數值。藉助tail,我們可以通過自定義指令碼監控任意指標,只需要指令碼的輸出滿足要求即可。
    • 顯而易見,TAIL後面的引數就是配置要讀取的檔案的地址,測試執行時,ServerAgent將根據配置讀取所在伺服器的指定檔案。

總結

本文先簡單的講解了JMeter效能測試資源監控外掛的部署,然後從現有指標、曲線圖和自定義指標三個方面講解了外掛使用過程中比較使用的細節問題,希望通過本文,讓大家能靈活運用這款外掛來快速實現自己的測試需求。