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

Jemter   壓測基礎(一)

 

1.壓力測試的基本概念

 

   1.吞吐率(Requestspersecond)apache

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

  

  2.併發鏈接數(Thenumberofconcurrentconnections)併發

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

 

  3.併發用戶數(Thenumberofconcurrentusers,ConcurrencyLevel)工具

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

 

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

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

 

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

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

 

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.壓力測試報告

  一、壓力測試概要

    測試環境:

    測試時間:

    服務端配置:

    客戶端配置:

    測試工具:JMeter

  二、測試說明

    (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個線程,來模擬這麼多用戶併發訪問系統,每一個用戶循環訪問一次

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

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

   五、給出典型圖形結果

    名詞解釋:

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

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

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

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

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

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

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

 

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等使用情況拆線圖了

相關文章
相關標籤/搜索