JMeter簡單的性能測試實例

JMeter基礎之——一個簡單的性能測試php

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

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

  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 文本框中填入須要下載的特定資源表達式,這樣,只有能匹配指定正則表達式的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!到此一次完整的性能測試結束,若是你從中有所收穫,推薦一記~!



提示:若是上面顯示空白或者頁面排版混亂、內容顯示不完整等影響閱讀的問題,請點擊這兒瀏覽原文

返回腳本百事通首頁    若是您喜歡IT行業或者對IT行業感興趣,歡迎加入本站官方QQ羣:246889341,在羣裏認識新朋友和交流技術^_^

相關文章
相關標籤/搜索