天天看點

jmeter和loadrunner測試結果差異大-web頁面靜态資源下載下傳

最近有朋友性能測試時遇到Jmeter和Loadrunner測試的結果差異很大,對結果很糾結。筆者在與之一同排查的過程中發現很多老司機也總會踩到的坑-web頁面靜态資源下載下傳.

問題:jmeter和loadrunner測試結果差異大

描述: 一個簡單的web頁面,同樣50并發使用者,響應時間十幾毫秒,Loadrunner測試結果TPS=1500,jmeter測試結果TPS=4000+,大家怎麼看這個問題?

分析:可能的原因有很多,我們從以下幾個方面逐漸排查

1.壓力機資源情況

Loadrunner體量大,消耗的資源也比Jmeter較高,這種情況觀察系統CPU、記憶體等資源的使用情況,特别注意有事CPU使用率還在可接受範圍内,但是cpu load很高(cpu load>cpu核數,說明cpu隊列存在等待情況),這種情況就是壓力機資源出現瓶頸了;盡量不要用個人的pc機作為壓力機,高并發下資源可能存在瓶頸。

2.腳本中等待時間

對于頁面的性能測試,通常為了模拟使用者的真實使用情況,或者通過錄制等到的腳本裡面有等待時間,如lr_think_time()函數,或者在Jmeter中添加定時器,同樣會對發送的壓力産生影響。

3.請求是否成功

確定Loadrunner腳本添加了檢查點、Jmeter腳本添加了斷言,保證請求都正确響應,避免以為錯誤響應影響性能。

4.web頁面靜态資源下載下傳

web頁面中通常包含很多靜态資源(非HTML資源),如js、css、圖檔等,這些資源可能不會經常變化,如果每次都去伺服器端加載這些資源,會浪費時間和帶寬,是以浏覽器會把這列不常用的靜态資源緩存,在使用工具壓測的時候,是否模拟浏覽器緩存,是否每次下載下傳靜态資源會對性能有非常大的影響。這也是本次導緻jmeter和Loadrunner測試結果差距很大的原因。

工具中對web靜态資源是否下載下傳的配置:

1.Loadrunner預設配置的是下載下傳靜态資源,每次疊代模拟新使用者,清除緩存,如圖:

jmeter和loadrunner測試結果差異大-web頁面靜态資源下載下傳

是以為了更好的模拟使用者的使用習慣,通常是不下載下傳靜态資源,即将上面三個選項取消勾選

2.Jmeter預設配置的是不下載下傳靜态資源,這點與Loadrunner正好相反,如圖:

jmeter和loadrunner測試結果差異大-web頁面靜态資源下載下傳

是以,在使用Loadrunner和Jmeter測試web頁面的時候,如果都使用預設選項,可能導緻結果差異很大。

其他:

web頁面靜态資源下載下傳的配置會對web頁面性能測試結果有影響,對http單個請求是沒有影響的,一個http請求類似于一個接口,不存在靜态資源的下載下傳情況。

繼續閱讀