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