Jemter 壓測基礎(一)——基本概念、JMeter安裝使用、分布式測試、導出測試結果、編寫測試報告


Jemter   壓測基礎(一)

 

1.壓力測試的基本概念

 

   1.吞吐率(Requestspersecond)

    服務器並發處理能力的量化描述,單位是reqs/s,指的是某個並發用戶數下單位時間內處理的請求數。某個並發用戶數下單位時間內能處理的最大請求數,稱之為最大吞吐率。計算公式:總請求數/處理完成這些請求數所花費的時間,即Requestpersecond=Completerequests/Timetakenfortests

  

  2.並發連接數(Thenumberofconcurrentconnections)

    某個時刻服務器所接受的請求數目,簡單的講,就是一個會話。

 

  3.並發用戶數(Thenumberofconcurrentusers,ConcurrencyLevel)

    注意區分這個概念和並發連接數之間的區別,一個用戶可能同時會產生多個會話,即連接數。

 

  4.用戶平均請求等待時間(Timeperrequest)

    計算公式:處理完成所有請求數所花費的時間/(總請求數/並發用戶數),即Timeperrequest=Timetakenfortests/(Completerequests/ConcurrencyLevel)

 

  5.服務器平均請求等待時間(Timeperrequest:acrossallconcurrentrequests)

    計算公式:處理完成所有請求數所花費的時間/總請求數,即Timetakenfor/testsCompleterequests可以看到,它是吞吐率的倒數。同時,它也=用戶平均請求等待時間/並發用戶數,即 Timeperrequest/ConcurrencyLevel

 

2.安裝打開Jemeter,添加測試計划等

  地址:http://jmeter.apache.org/download_jmeter.cgi

 

1】運行安裝目錄中的bin/jmeter.bat

 

2】新建testplan

 

3】添加 thread group

  Number of Threads (Users) 線程數:發送請求的總次數

  Ramp-up Period(in seconds):Jmeter達到指定最大線程數的時間

  Loop Count :循環次數,Forever,線程組中的線程將不間斷的連續測試系統

  調度器:主要用來指定該測試的一些時間信息,比如從幾點到幾點運行測試,如果到了指定時間測試沒有進行完成,測試也會被停止。

 

4】添加請求:sampler——》HTTP request

  填寫:服務器IP、port、接口URL、請求方法、請求參數(POST請求參數只支持Body Data,不支持Parameters)

 

5】添加HTTP Header Manager:config element——》HTTP Header Manager

  1)config element 配置單元:和Sample組件一起工作,主要用來配置Sample如何來發起請求訪問服務器,特點是可以把一些Sample的共同配置放在一個元素里面方便管理,配置單元是有作用域的。作用域和樹的那個關系一樣越是上級節點的作用域越大,越是接近葉子節點的作用域就越小,可以復寫上級作用域的配置。

  2)填寫請求頭信息:盡量使用fiddler抓包 獲取

  3)Accept (Accept填寫不正確,會報錯406)

   X-Requested-With

   Content-Type 等

   

6】添加監聽

  例如:

  Summary Report:listener——》Summary Report

  View Results Tree:listener——》View Results Tree

  

  常用監聽:

  1)斷言結果

  2)查看結果樹

  3)聚合報告

  4)用表格查看結果

  5)圖形結果

  6)aggregate graph

 

7】JMeter安裝PerfMon插件

  PerfMon用來監控Server的CPU、I/O、Memory等情況。

  1) 插件下載地址:http://code.google.com/p/jmeter-plugins/wiki/PerfMon 

  2)把JMeterPlugins.jar放到jmeter客戶端的jmeter/lib/ext下。

  3)啟動jmeter,添加Listener時你就看到PerfMon Metrics Collectors了。

  4)另外還需要把下載下來的PerfMon解壓后放到所有的被測試的服務器上,並運JMeterPlugins/serverAgent/startAgent.sh,默認工作在4444端口。

  5) 使用PerfMon截圖:

  

  在非GUI模式下運行Jmeter時指定把result保存到一個文件,非常必要

 

3.遠程啟動jmeter(分布式性能測試)

  JMeter是由Java開發的,比較耗內存、占CPU,所以在大並發下還是需要分布式

  應用進場景:用一台機器 Controller(稱為JMeter客戶端)上的jmeter同時啟動另外幾台機器 Agent(稱為JMeter遠程服務器)上的jmeter。

  1)保證jmeter客戶端和jmeter遠程服務器采用相同版本的jmeter和JDK,並配置環境變量。

  2)jmeter客戶端和jmeter遠程服務器最好在同一個網段內。

  3)在jmeter遠程服務器上運行JMETER_HOME/bin/jmeter-server (Linux/UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows);在console上可以看到對應機器的IP以及port;

  4)在jmeter客戶端上修改/bin/jmeter.properties文件,找到屬性"remote_hosts",使用JMeter遠程服務器的IP地址作為其屬性值。可以添加多個服務器的IP地址,以逗號作為分隔;port有可能會不同,但一般情況下是相同的 

    如果配置了Controller的IP那么會將controller機器也作為一台壓力機

    #remote_hosts=127.0.0.1
  remote_hosts=9.115.210.2:1099,9.115.210.3:1099,9.115.210.4:1099
  # RMI port to be used by the server (must start rmiregistry with same port)
  server_port=1099

  5) 在jmeter客戶端上啟動jmeter:

   啟動controller的JMeter,進入JMeter GUI頁面,選擇菜單“運行”——》“遠程啟動”,分別啟動agent,也可以直接選擇“遠程全部啟動”啟動所有agent的JMeter
 

  注意點

      1.盡量關閉防火牆

      2.確定在controller機器上安裝jdk,版本和JMeter一致(兼容行)

      3.Agent機器啟動 JMeter_server時,后台提示:"could not find ApacheJmeter_core.jar"

          解決辦法:添加環境變量JMETER_HOME,路徑為bin目錄的上一級

      4.JMeter分布式控制過程中,各個Agent啟動的線程數等於線程組中的配置

 

 4.導出運行結果 

  JMeter中,結果需要存放在.jtl文件。在下圖紅色區域填寫你需要要保存的位置以及文件名稱,例如: D:/testReuslt.jtl

 

  .jtl文件可以提供多中格式的編寫,一般我們都是將其以CSV文件格式記錄。

 

  進入JMeter后,選擇某個監聽器,點擊頁面中的configure按鈕。設置界面,可以勾選Save Field Names(CSV),Save Assertion Failure Message等等

 

5.壓力測試報告

  1、壓力測試概要

    測試環境:

    測試時間:

    服務端配置:

    客戶端配置:

    測試工具:JMeter

  2、測試說明

    (1)名詞定義(時間單位ms)

    Sample:本次測試場景共運行多少線程;

     Average:平均響應時間; 

     Median:統計意義上的響應時間中值;

      90% line:所有線程中90%的線程響應時間都小於xx的值;

      Min:響應最小時間;

     Max:響應最大時間;

     Error:出錯率;

    Throughput - 吞吐量以“requests/second、requests /minute、 requests /hour”來衡量。 時間單位已經被選取為second,所以,顯示速率至少是1.0,即每秒1個請求。 當吞吐量被保存到CVS文件時,采用的是requests/second,所以30.0 requests/second 在CVS中被保存為0.5Kb/sec - 以Kilobytes/seond來衡量的吞吐量

  (2)描述測試數據,例如:

    分別對以上頁面進行壓力測試     分別測試10,50,100,500,1000個線程,來模擬這么多用戶並發訪問系統,每個用戶循環訪問一次

   3、測試結果分析(列出表格,主要是聚合報告各數據對比)

   4、給出典型聚合報告(聚合報告名詞解釋如上2、(1)所述)

   5、給出典型圖形結果

    名詞解釋:

    樣本數目是總共發送到服務器的請求數。

    最新樣本是代表時間的數字,是服務器響應最后一個請求的時間。

    吞吐量是服務器每分鍾處理的請求數。 

    平均值是總運行時間除以發送到服務器的請求數。 

    中間值是代表時間的數字,有一半的服務器響應時間低於該值而另一半高於該值。 

    偏離表示服務器響應時間變化、離散程度測量值的大小,或者,換句話說,就是數據的分布。

  6、根據以上結果分析,給出總結,得出結論,說明調優點

 

6.非GUI模式下運行Jmeter

  具體方法:先在GUI模式下創建TestPlan,保存為jmx文件

  命令行啟動jmeter:./ApacheJMeter -n -t testplan.jmx (選項-n表示non-GUI,-t指定TestPlan文件)

  運行結束后Aggregate Report和PerfMon Metrics Collector就會保存在你指定的文件中

  保存PerfMon Metrics Collector的文件拖到Jmerter GUI中就可以看到CUP等使用狀況拆線圖了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM