Jmeter之壓力測試總結
一、基本概念
1.線程組N:代表一定數量的並發用戶,所謂並發就是指同一時刻訪問發送請求的用戶。線程組就是模擬並發用戶訪問。
2.Ramp-Up Period(in seconds):建立所有線程的周期,就是告訴jmeter要在多久沒啟動所有線程,保證在最後一個線程啟動時,第一個線程還在運行中,已達到壓測的目的。
默認值為0,,意味著jmeter執行測試立即就要啟動完所有線程發送請求,很容易導致服務器過載,這是不合理的,我們想要的應該是逐漸增加用戶訪問量達到峰值。
若設置為Ts,意味著每隔T/NS建立一個線程,在T秒內建立完所有線程。
3.循環次數A:指在一個線程在持續時間內發送請求的次數,壓測時,循環次數設置為永遠。
4.調度器->持續時間:模擬用戶並發行為持續的時間,也就是腳本持續運行的時間,一般是10分-20分鐘。
5.調度器->啟動延遲:意味著在多久後模擬用戶並發開始,也就是腳本啟動延遲的時間,點擊啟動後,還是默認等到延遲時間到達後才啟動。
6.啟動時間,結束時間:可以設置腳本啟動和結束時間,相當於定時,設置好,運行結束後自動報名結果。
具體如下圖:
二、壓測指標
腳本執行後,在測試計劃->線程組->監聽器->聚合報告查看壓測結果
1.Samples:請求總數,即在這次測試時一共發了多少次請求。
2.Average:即平均響應時間,一般是單個 Request 的平均響應時間,指從客戶端發送請求到服務器返回數據的時間,這個值越小越好。
3.Median:50% 用戶的響應時間
4.90% Line:90% 用戶的響應時間
5.Error%:本次測試中的錯誤率,值=出現錯誤的請求的數量/請求的總數
6.Throughput:即tps,吞吐量指服務器端每秒處理的請求數。
具體如下圖所示:
三、Jmeter分布式壓測
客戶機沒有足夠的能力來模擬較重的負載,我們可以使用Jmeter的分布式測試功能來通過一個Jmeter控制臺來遠程控制多個Jmeter引擎完成測試。
3.1實現原理:
- 有多電腦,一臺作為控制機(Controller),其它機器做為代理機(Agent);
- 腳本發送到每臺機器上,Agent機器不需要啟動Jmeter,通過ip找到代理機器,在通過jmeter-server.bat文件找到代理機的jmeter,讓其幫忙發請求;
- 執行後,Agent把結果回傳到Controller匯總。
3.2實現步驟:
- 有多臺電腦,每臺電腦上都有jmeter,而且這幾臺電腦都互相能ping通;
- 在控制機的jmeter的配置文件裏面添加了代理機的IP;
- 在代理機上啟動運行jmeter-server.bat文件,不需要啟動jmeter;
註意:如果有參數化文件,在代理機上的相同位置也要放置一份參數化文件。
3.3控制機配置
打開jmeter\apache-jmeter-3.0\bin\jmeter.properties文件,搜索Remote_hosts,將所有代理機的IP地址加在控制機的配置文件中。
配置好後,代理機器都啟動運行jmeter-server.bat文件,然後執行腳本即可。
那麽如何啟動所有機器呢?修改配置文件後,重啟Jmeter,在運行->遠程啟動下顯示所有控制機和代理機的ip。選擇遠程所有啟動,就會啟動所有機器。
3.4 Linux下運行壓測腳本
在windows電腦上保存已做好的壓測腳本,比如:HTTP請求.jmx。
- Linux下無圖形化界面,將jmeter\apache-jmeter-3.0\bin目錄(bin目錄)放到環境變量PATH下,我們就可以用jmeter的命令啦;
- 然後執行命令:jmeter -n -t e:\path\HTTP請求.jmx -l e:/path/res.jtl
- -n:代表在沒有圖形化界面下運行,-t 指定一個測試腳本,-l 指定結果文件,這個結果文件後綴名為.jtl
四 Jmeter操作數據庫
下載mysql-connector-java-5.1.7-bin.jar包,具體操作如下圖:
在線程組->添加->配置原件->添加JDBC Connection Configration,設置參數如下圖,記得加上:
在線程組->Sample->添加JDBC request,參數設置如下圖:
SQL語句執行結果,在察看結果樹中察看結果。
Jmeter之壓力測試總結