JMeter壓測上對於併發的認識誤區

2022-02-08 01:38:31 字數 1518 閱讀 8096

1、誤區

在jmeter壓測過程中,我們通常認為1s內100的併發量(即:qps為100)的設定如下:

此時,沒有再新增額外的控制器。上述中的引數設定解釋:

number of threads(users): 啟用的併發執行緒個數

ramp0up period(in seconds):在多少秒之內將上述併發的執行緒啟動起來

loop count:控制迴圈次數

說明:乙個常見的誤解,認為number of threads(users)設定為100,ramp-up period(in seconds)設定為1,就是每秒發起100個請求量(錯誤)。

上述的設定,表示在1s內啟動100個執行緒,之後,jmeter便以最大限度的100個併發進行壓測,不能保證1s內只有100個請求。

我們用上述的設定,對某個介面進行壓測,發現:

在一秒內,發起的請求居然有五百多個,與實際想要的1s發起100個併發是有差別的。

2、解決方法:

新增constant throughput timer(常數吞吐量定時器),該定時器可以方便地控制給定的取樣器傳送請求的吞吐量。

delay before each affected sampleer下的target throughput(in samples per minute)設定的值為6000(由於單位是一分鐘,如果要求qps為100,則該值設定為60*100=6000)

calculate throughput based on的選項有5個(這裡我選擇all active threads),分別是:

1)this thread only:控制每個執行緒的吞吐量,選擇這種模式時,總的吞吐量為設定的target throughput 乘以改執行緒的數量。

2)all active threads:設定的target throughput 將分配在每個活躍執行緒上,每個活躍執行緒在上次執行結束後等待合理的時間再次執行。活躍執行緒指同一時刻同時執行的執行緒。

3)all active threads in current thread group:設定的target throughput將分配在當前執行緒組的每乙個活躍執行緒上,當測試計畫中只有乙個執行緒時,改選項和all active threads選項的效果完全相同。

4)all active threads(shared):與all active threads的選項基本相同,唯一的區別是,每個活躍執行緒都會在所有活躍執行緒上執行一次結束後等待合理的時間後再次執行。

5)all active threads in current thread group(shared):與all active threads in current thread group 基本相同,唯一的區別是,每個活躍執行緒都會在所有活躍執行緒的上一次執行結束後等待合理的時間再次執行。

————————————————

JMETER併發壓測

通過jmeter的命令列執行指令碼,實現多個使用者同時請求介面,實現併發 因為我希望同時壓測兩個介面,所以試了兩種方式來實現,目前好像兩種都可,如果出現了什麼其他錯誤歡迎指出 第一種 1.建立測試計畫 2.新增乙個執行緒組 3.新增乙個同步定時器 synchronizing timer 該定時器作用...

Jmeter 壓測和AB壓測的比較

使用場景 jmeter告訴你每個請求實際上耗費多長時間。ab只是簡單的用數學方式統計平均值。所以從準確性來說,jmeter比ab更準確,更多如資料處理。但是ab的速度更快,更輕巧。如果效能測試的目的在於更真實的表現被測應用,那麼jmeter更佳。但如僅僅是用最少的機器資源產生最多的訪問請求,那ab適...

Jmeter在Windows上分布式壓測遇到的坑

1 五星坑 遠端啟動測試,響應資料為空。controller執行jmeter指令碼後,gui無效能資料返回。agent的jmeter server顯示連線後立即結束。看似執行實則響應資料為空。出現以上情況原因及解決辦法 1 jmeter指令碼和測試資料 如果有的話 主機和從機兩邊都要存放。且cont...