Apache JMeter是Apache旗下的開源測(cè)試工具,成立于1999年初,至今已有20多年的歷史。JMeter是主流開源壓力測(cè)量工具之一,功能豐富,社區(qū)龐大。
性能測(cè)試通常集中在新系統(tǒng)上線或大規(guī)?;顒?dòng)之前,以驗(yàn)證系統(tǒng)能力,幫助排除和定位性能瓶頸。
壓力測(cè)量活動(dòng)可以大致分為幾個(gè)步驟:
1.場(chǎng)景配置。配置壓力測(cè)試場(chǎng)景以模擬用戶和系統(tǒng)之間的交互。
2.進(jìn)行壓力測(cè)量。根據(jù)指定的壓力水平開始?jí)毫y(cè)量。
3.壓力監(jiān)測(cè)和分析。壓力測(cè)試通常側(cè)重于壓力RPS、成功率、服務(wù)響應(yīng)時(shí)間、網(wǎng)絡(luò)帶寬等關(guān)鍵指標(biāo)。
4.報(bào)告摘要。披露系統(tǒng)能力是否滿足要求,記錄系統(tǒng)性能的演變和優(yōu)化過程。
接下來,我們討論如何使用JMeter完成上述步驟,以及相關(guān)的最佳實(shí)踐建議。
用Java開發(fā)JMeter,需要先安裝JDK并配置PATH環(huán)境變量,然后從官網(wǎng)下載JMeter二進(jìn)制壓縮包并解壓。建議在PATH環(huán)境變量中添加jmeter bin目錄,這樣在命令行輸入jmeter命令就可以啟動(dòng)JMeter。
JMeter的場(chǎng)景配置
簡(jiǎn)單的HTTP請(qǐng)求配置
最常見的壓力測(cè)試場(chǎng)景是HTTP壓力測(cè)試。測(cè)試場(chǎng)景在JMeter腳本中稱為測(cè)試計(jì)劃。當(dāng)JMeter打開時(shí),默認(rèn)情況下它將是空測(cè)試計(jì)劃。JMeter使用并發(fā)來控制壓力,一個(gè)線程可以看作是執(zhí)行請(qǐng)求的虛擬用戶。右鍵單擊測(cè)試計(jì)劃并添加線程組。
線程組默認(rèn)為1個(gè)線程,只執(zhí)行一次,方便測(cè)試和執(zhí)行腳本。保持這個(gè)默認(rèn)值就可以了。
在JMeter中發(fā)送請(qǐng)求的組件稱為采樣器。通過右鍵單擊線程組添加一個(gè)HTTP請(qǐng)求節(jié)點(diǎn)。
HTTP請(qǐng)求最關(guān)鍵的配置是URL。JMeter允許URL協(xié)議類型、服務(wù)器名稱、請(qǐng)求路徑等。單獨(dú)配置。您也可以將整個(gè)網(wǎng)址直接填寫到路徑中,并將其他字段保留為空。
這樣就配置了最簡(jiǎn)單的HTTP壓力測(cè)試腳本。
為了方便地測(cè)試和調(diào)試腳本,可以在測(cè)試計(jì)劃下添加一個(gè)查看結(jié)果樹偵聽器。該偵聽器僅用于在編輯腳本時(shí)測(cè)試和調(diào)試腳本,以及查看請(qǐng)求執(zhí)行的詳細(xì)信息,無需任何配置。
測(cè)試執(zhí)行腳本
第一次執(zhí)行腳本之前,需要保存腳本,比如保存為test.jmx每次執(zhí)行腳本之前,JMeter都會(huì)默認(rèn)自動(dòng)保存腳本。
當(dāng)連續(xù)執(zhí)行腳本幾次時(shí),JMeter默認(rèn)情況下不會(huì)清理歷史記錄。為避免歷史執(zhí)行結(jié)果的干擾,單擊“全部清除”按鈕,手動(dòng)清除空歷史記錄,然后單擊“開始”按鈕執(zhí)行腳本,執(zhí)行結(jié)果更加刷新,便于故障排除。
根據(jù)默認(rèn)的線程組配置,腳本完成一次。單擊查看結(jié)果樹,查看請(qǐng)求執(zhí)行的詳細(xì)信息,包括請(qǐng)求頭、請(qǐng)求體、響應(yīng)頭和完整的響應(yīng)體。
場(chǎng)景布置
真實(shí)的試壓場(chǎng)景通常不是只有一個(gè)請(qǐng)求,而是多個(gè)請(qǐng)求按照一定順序和規(guī)則的組合,即場(chǎng)景布局。場(chǎng)景編排是JMeter等壓力測(cè)試引擎最重要的功能之一,也是與Apache ab等簡(jiǎn)單壓力測(cè)試工具的重要區(qū)別之一。
這里我們假設(shè)一個(gè)最簡(jiǎn)單的場(chǎng)景,首先訪問JMeter主頁,停留1秒鐘,然后跳轉(zhuǎn)到下載頁面。
當(dāng)腳本訪問網(wǎng)站的不同頁面時(shí),它可以添加一個(gè)HTTP請(qǐng)求默認(rèn)值節(jié)點(diǎn)來配置默認(rèn)協(xié)議類型和服務(wù)器名稱。這樣可以避免重復(fù)配置。當(dāng)需要修改協(xié)議類型或域名時(shí),只能修改HTTP請(qǐng)求默認(rèn)值。
“HTTP請(qǐng)求默認(rèn)值”配置服務(wù)器的名稱是jmeter.apache.org,鼠標(biāo)可以拖動(dòng)“HTTP請(qǐng)求默認(rèn)值”節(jié)點(diǎn)移動(dòng)到“HTTP請(qǐng)求”節(jié)點(diǎn)之前。
每個(gè)請(qǐng)求節(jié)點(diǎn)都可以設(shè)置一個(gè)有業(yè)務(wù)含義的名稱,方便理解和管理。訪問JMeter主頁的HTTP請(qǐng)求可以重命名為home,路徑改為/。添加另一個(gè)HTTP請(qǐng)求節(jié)點(diǎn),將其命名為下載頁面,并將路徑設(shè)置為/download_jmeter.cgi..
模擬在主頁上暫停1秒鐘。右鍵單擊主節(jié)點(diǎn),添加一個(gè)常量計(jì)時(shí)器子節(jié)點(diǎn),并將延遲時(shí)間設(shè)置為1000毫秒。
再次執(zhí)行腳本,點(diǎn)擊查看結(jié)果樹,查看兩個(gè)HTTP請(qǐng)求節(jié)點(diǎn)的執(zhí)行細(xì)節(jié)。
注意:
定時(shí)器節(jié)點(diǎn)作為場(chǎng)景布置的輔助節(jié)點(diǎn),不請(qǐng)求執(zhí)行動(dòng)作或顯示細(xì)節(jié)。
循環(huán)執(zhí)行腳本時(shí),最后一個(gè)節(jié)點(diǎn)下載頁面執(zhí)行完畢后,會(huì)立即跳轉(zhuǎn)到腳本的開頭,執(zhí)行第一個(gè)節(jié)點(diǎn)home。您還可以在下載頁面上添加一個(gè)計(jì)時(shí)器,以模擬在繼續(xù)后續(xù)請(qǐng)求之前停留一秒鐘。
JMeter的壓力測(cè)試執(zhí)行
在編輯和調(diào)試腳本時(shí),我們通常將它們?cè)O(shè)置為1個(gè)線程,并且只執(zhí)行一次。進(jìn)行壓力測(cè)試時(shí),通常需要在更高的壓力下持續(xù)進(jìn)行一段時(shí)間。
腳本固定配置壓力
如果計(jì)劃在50并發(fā)執(zhí)行2分鐘,腳本線程組的配置可以修改如下。
配置描述:
1.并發(fā)數(shù)設(shè)置為50。
2.檢查要始終執(zhí)行的周期數(shù)。
3.檢查調(diào)度程序,并將執(zhí)行時(shí)間設(shè)置為120秒。
通常我們?cè)贘Meter圖形界面中編輯腳本,但是壓力測(cè)試時(shí)GUI占用的額外資源可能會(huì)影響壓力性能,壓力機(jī)可能沒有圖形界面環(huán)境。因此,腳本編輯完成后,JMeter壓力測(cè)試通常以命令行模式執(zhí)行。
進(jìn)入JMeter腳本目錄,執(zhí)行JMeter壓力測(cè)試的命令是jmeter -n -t。
如果執(zhí)行上述test.jmx腳本,命令如下:jmeter -n -t test.jmx
輸出結(jié)果如下:創(chuàng)建摘要
使用test.jmx成功創(chuàng)建了樹
2019年6月25日星期二14:38:32開始測(cè)試
在端口4445上等待可能的關(guān)閉/停止測(cè)試現(xiàn)在/堆泵消息
00:00:27中的摘要+553 = 20.3/s平均值:1378最小值:252最大值:8587錯(cuò)誤:0活動(dòng):50開始:50完成:0
1.《壓測(cè) 阿里巴巴在開源壓測(cè)工具 JMeter 上的實(shí)踐和優(yōu)化》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。
2.《壓測(cè) 阿里巴巴在開源壓測(cè)工具 JMeter 上的實(shí)踐和優(yōu)化》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。
3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/guoji/1534521.html