Jmeter之負載測試--在固定吞吐量下測試系統的性能表現

根據之前寫的“性能測試之負載測試(生活比喻)”,可知性能測試結果都是有前提的;

本篇主要是說明如何在固定吞吐量下測試系統的性能表現;

還是老套路;


場景

測試百度主頁在20 QPS的情況下,響應時間、流量等性能數據;


分析

1、這裏的20 QPS應該是指Jmeter發送請求的QPS,而不是服務器處理的QPS;--因爲假如我們以20 QPS的速度向服務器發送請求,但是服務器每秒最多隻能處理8個請求,那麼我們無論如何都無法測得服務器在20 QPS的情況下的性能數據;

2、難點在於讓Jmeter【穩定地】以20 QPS的速度向服務器發送請求;


處理思路

利用Jmeter的constant throughput timer來設置Jmeter的請求吞吐量,同時檢測服務器的響應時間等性能數據;


操作步驟:

1、爲線程組添加“constant throughput timer(固定吞吐量定時器)”;如下圖:

wKioL1gOMJfhW_jVAABWxHxJE3U464.png


2、配置constant throughput timer

wKioL1ge37vg-WZiAAEDxn8HqMc735.png

名稱:定時的名稱;

Target throughput:目標(期望)吞吐量,注意,這裏的吞吐量不是per second,而是每分鐘;

既然是測試在20 QPS情況下的系統表現,那麼這裏我們應該填 20*60=1200;


calculate throughput based on:這是一個下拉框,表示以**爲基礎來控制Jmeter的請求吞吐量,
我們這裏選擇All active threads in current thread group;

說明如下:


--This thread only :分別控制每個線程的吞吐量,選擇這種模式時,總的吞吐量爲設置的 target Throughput 乘以線程的數量。

如果我們這裏選擇此種模式,然後設定了是10個線程,那麼我們前面的Target throughput就應該填寫1200/10=120 或 20/10*60=120了;


--All active threads : 設置的target Throughput 將分配在每個活躍線程上,每個活躍線程在上一次運行結束後等待合理的時間後再次運行。活躍線程指同一時刻同時運行的線程。

如果我們這裏選擇此種模式,然後設定了是10個線程,那麼我們前面的Target throughput就應該填寫1200/10=120 或 20/10*60=120了;


--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 基本相同,唯一的區別是,每個活躍線程都會在所有活躍線程的上一次運行結束後等待合理的時間後再次運行。


3、配置線程組屬性

前面只是配置了QPS,所以我們接着配置,Jmeter持續發送請求的時間,

(1)在線程屬性-循環測試處,勾選上“永遠”,(此時旁邊的editText就無法輸入了);

(2)勾選“調度器”,在持續時間中配置10秒,或在啓動時間、結束時間處配置一個時間間隔爲10秒的時間區間;

wKiom1ge4iGycGimAAD1RDNsy1M104.png

4、添加聚合報告、TPS監聽器;

(1)我們以20QPS發送10秒,20*10=200個,聚合報告中215個,比較相近,可看爲已達到目的;

我測試多次,有時候是205,有時候是210,這個受多因素影響,接近即可;

wKiom1ge44bjzZpRAAEnp4g2aPs960.png

(2)看TPS;

也是基本爲20QPS,百度服務器完成能勝任20QPS的壓力;

wKiom1ge5AHRjlvtAADMRIkSpps119.png

5、測試報告

相信大家都發現了,同一個測試計劃(此處是20QPS的情況下請求10秒),執行多次的結果不盡相同,吞吐量、響應時間等,所以我們寫測試報告的時候並不是只寫其中一個報告的測試值;

(1)同一個測試計劃運行3次以上,並分別將關注的屬性值記下來,比如我測試了5次,關注99%line,5次的值分別是300、344、285、360、380;

(2)將這些值繪製成一個曲線圖,得出測試結論,99%Line大概是340ms;

wKioL1ge54DwSGjfAACJ6LH5_ZY491.png


參考鳴謝:

JMeter基礎之一 一個簡單的性能測試:http://www.cnblogs.com/fnng/archive/2012/12/22/2829479.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章