JMeter基礎之一 一個簡單的效能測試

來源:互聯網
上載者:User

 

上一節中,我們瞭解了jmeter的一此主要元件,那麼這些元件如何使用到效能測試中呢。這一節建立一個簡單的測試計劃來使用這些元件。該計劃對應的測試需求。

1)測試目標網站是fnng.cnblogs.com  和 tt-topia.rhcloud.com

2)測試目的是該網站在負載達到20 QPS 時的回應時間。

 

QPS 解釋

  QPS : Query Per Second 每秒查詢率。是一台查詢服務器每秒能夠處理的查詢次數。在網際網路上,作為網域名稱系統伺服器的機器的效能經常用每秒查詢率來衡量。

 

  為了達成預期的測目的,需要需要在jmeter中建立一個測試計劃。因為本次測試僅要求完成對fnng.cnblogs.com  和 tt-topia.rhcloud.com 兩個部落格首頁請求,因此只需要使用HTTP Request Sampler 即可。

 

建立測試計劃

   啟動jmeter後,jmeter會自動產生一個空的測試計劃,使用者可以基於該測試計劃建立自己的測試計劃。

 

添加線程組

 

    一個效能測試請求負載是基於一個線程組完成的。一個測試計劃必須有一個線程組。測試計劃添加線程組非常簡單。在測試計劃右鍵彈出下拉式功能表(添加-->Threads(Users)--->線程組)中選擇線程組即可。

   jmeter中 每個測試計劃至少需要包含一個線程組,當然也可以在一個計劃中建立多個線程組,那麼多個線程組之間又會怎樣的順序執行(串列還是並行)?在測試計劃下面多個線程是並存執行的,也就是說這些線程組是同時被初始化並同時執行線程組下的Sampler的。

 

 

   線程組主要包含三個參數:線程數、準備時間長度(Ramp-Up Period(in seconds))、迴圈次數。

線程數:虛擬使用者數。一個虛擬使用者佔用一個進程或線程。設定多少虛擬使用者數在這裡也就是設定多少個線程數。

準備時間長度: 設定的虛擬使用者數需要多長時間全部啟動。如果線程數為20 ,準備時間長度為10 ,那麼需要10秒鐘啟動20個線程。也就是每秒鐘啟動2個線程。

迴圈次數:每個線程發送請求的次數。如果線程數為20 ,迴圈次數為100 ,那麼每個線程發送100次請求。總請求數為20*100=2000 。如果勾選了“永遠”,那麼所有線程會一直發送請求,一到選擇停止運行指令碼。

  設定合理的線程數對於能否達到測試目標有決定性的影響。在本例中,要求得到網站首頁在20 QPS 負載情況下的回應時間,如果如果線程數量設定的過小,則很可能無法達到設定的QPS要求。另外,設定合理的迴圈次數也很重要,除了上面介紹的固定迴圈次數與永遠外;也可以靈活的選擇設定測試回合時間。勾選“調度器”,進行調度器配置。

 

 

添加HTTP請求

 

  添加完成線程組後,線上程組上右鍵菜單(添加--->Sampler--->HTTP請求)選擇HTTP請求。對於jmeter來說,取樣器(Sampler)是與伺服器進行互動的單元。一個取樣器通常進行三部分的工作:

向伺服器發送請求

記錄伺服器的響應資料

記錄相應時間資訊

   一個HTTP請求有著許多的配置參數,下面將詳細介紹:

名稱:本屬性用於標識一個取樣器,建議使用一個有意義的名稱。

注釋:對於測試沒有任何作用,僅使用者記錄使用者可讀的注釋資訊。

伺服器名稱或IP :HTTP請求發送的目標伺服器名稱或IP地址。

連接埠號碼:目標伺服器的連接埠號碼,預設值為80 。

協議:向目標伺服器發送HTTP請求時的協議,可以是http或者是https ,預設值為http 。

方法:發送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

Content encoding :內容的編碼方式,預設值為iso8859

路徑:目標URL路徑(不包括伺服器位址和連接埠)

自動重新導向:如果選中該選項,當發送HTTP請求後得到的響應是302/301時,JMeter 自動重新導向到新的頁面。

Use keep Alive : 當該選項被選中時,jmeter 和目標伺服器之間使用 Keep-Alive方式進行HTTP通訊,預設選中。

Use multipart/from-data for HTTP POST :當發送HTTP POST 請求時,使用Use multipart/from-data方法發送,預設不選中。

同請求一起發送參數 : 在請求中發送URL參數,對於帶參數的URL ,jmeter提供了一個簡單的對參數化的方法。使用者可以將URL中所有參數設定在本表中,表中的每一行是一個參數值對(對應RUL中的 名稱1=值1)。

同請求一起傳送檔案:在請求中傳送檔案,通常,HTTP檔案上傳行為可以通過這種方式類比。

從HTML檔案擷取所有有內含的資源:當該選項被選中時,jmeter在發出HTTP請求並獲得響應的HTML檔案內容後,還對該HTML進行Parse 並擷取HTML中包含的所有資源(圖片、flash等),預設不選中,如果使用者只希望擷取頁面中的特定資源,可以在下方的Embedded URLs must match 文字框中填入需要下載的特定資源運算式,這樣,只有能匹配指定Regex的URL指向資源會被下載。

用作監視器:此取樣器被當成監視器,在Monitor Results Listener 中可以直接看到基於該取樣器的圖形化統計資訊。預設為不選中。

Save response as MD5 hash? :選中該項,在執行時僅記錄服務端響應資料的MD5值,而不記錄完整的響應資料。在需要進行資料量非常大的測試時,建議選中該項以減少取樣器記錄響應資料的開銷。

 

  在這裡我們添加兩個HTTP請求,分別用於對fnng.cnblogs.com  和 tt-topia.rhcloud.com發送請求。

 

設定QPS限制

 

 

  本次效能測試的需求中提到測試的目的是“瞭解部落格的首頁在負載達到20 QPS時的回應時間”,因此需要控制向部落格首頁發送請求的負載為20QPS。

  一種可行的方法是逐步調整測試計劃中的線程計算的數量以及為取樣器(Sampler)添加定時器(Timer),以使HTTP取樣器發出的請求的QPS保持在20個左右。但這種方法耗時耗力,需要經過多次嘗試才能達到;另一方法,完全通過設定定時器來控制QPS,一旦取樣器的回應時間發生改變(網路環境發生改變),就需要重新調整定時器的等待時間。

  Jmeter提供了一個非常有用的定時器,稱為Constant Throughput Timer (常數輸送量定時器),該定時器可以方便地控制給定的取樣器發送請求的輸送量。

  右鍵點擊fnng.cnblogs.com ,快顯功能表(添加--->定時器--->Constant Throughput Timer)選擇Constant Throughput Timer

Constant Throughput Timer 的主要屬性介紹:

名稱 :定時器的名稱

Target throughput(in samples per minute):目標輸送量。注意這裡是每分鐘發送的請求數,因此,對應測試需求中所要求的20 QPS ,這裡的值應該是1200 。

Calculate Throughput based on :有5個選項,分別是:

  This thread only :控制每個線程的輸送量,選擇這種模式時,總的輸送量為設定的 target Throughput 乘以矣線程的數量。

  All active threads : 設定的target Throughput 將分配在每個活躍線程上,每個活躍線程在上一次運行結束後等待合理的時間後再次運行。活躍線程指同一時刻同時啟動並執行線程。

  All active threads in current thread group :設定的target Throughput將分配在當前線程組的每一個活躍線程上,當測試計劃中只有一個線程組時,該選項和All active threads選項的效果完全相同。

  All active threads (shared ):與All active threads 的選項基本相同,唯一的區別是,每個活躍線程都會在所有活躍線程上一次運行結束後等待合理的時間後再次運行。

  All cative threads in current thread group (shared ):與All active threads in current thread group 基本相同,唯一的區別是,每個活躍線程都會在所有活躍線程的上一次運行結束後等待合理的時間後再次運行。

 

  如,該元件僅作用於fnng.cnblogs.com ,設定定時器的Target throughput為1200/分鐘(20 QPS),設定Calculate Throughput based on 的值為All active threads 。

  當然,Constant Throughput Timer只有線上程組中的線程產生足夠多的request 的情況下才有意義,因此,即使設定了Constant Throughput Timer的值,也可能由於線程組中的線程數量不夠,或是定時器設定不合理等原因導致總體的QPS不能達到預期目標。

 

 

添加監聽器(Listener)

 

   指令碼的主要部分設定完成後,需要通過某種方式獲得效能測試中的測試結果,在本例中,我們關心的是請求的回應時間。

  Jmeter 中使用監聽器元件收集取樣器記錄的資料並以可視化的方式來呈現。Jmeter有各種不同的監聽器類型,因為上HTTP請求,我們可在添加彙總報告,更為直觀的查看測試結果。

  添加彙總報告,右鍵點擊線程組,在彈的菜單(添加--->監聽器--->彙總報告)中選擇彙總報告。

 

 

運行指令碼

 

  添加完成彙總報告後,我們來運行指令碼,稍後介紹彙總報告的參數。

  在運指令碼之前,我們來查看一下,各個元件的參數設定:

--------------------------------------------------------------- 

線程組:

線程數:20

準備時間長度: 10

迴圈次數:10

---------------------------------------------------------------  

HTTP請求:

名稱:fnng.cnblogs.com。

伺服器名稱或IP :fnng.cnblogs.com

連接埠號碼:80 

Implementation : java 

協議: http

方法: GET

路徑:/

---------------------------------------------------------------  

常數輸送量定時器:

Target throughput(in samples per minute):1200.0

Calculate Throughput based on :All active threads

---------------------------------------------------------------  

點擊工具列上的運行按鈕,或者點擊功能表列“ 運行--->啟動 ” 或者使用快速鍵ctrl+r 來運行程式。

 

 

彙總報告分析

 

查看彙總報告的運行結果:

 

 OK! 到此一次完整的效能測試結束,如果你從中有所收穫,推薦一記~!

相關閱讀:

Jmeter基礎之---jmeter基礎概念JMeter基礎之—錄製指令碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.