創(chuàng)建JMeter場(chǎng)景
Apache JMeter是Apache的開源壓測(cè)工具,支持參數(shù)化、斷言等功能。其豐富的開源生態(tài)提供了各種協(xié)議和控制器的擴(kuò)展,同時(shí)可以通過(guò)自定義腳本編寫參數(shù)處理等邏輯。PTS支持JMeter原生引擎的壓測(cè),并在此基礎(chǔ)上,為您提供便捷的橫向擴(kuò)展能力,同時(shí)結(jié)合云監(jiān)控集成功能持續(xù)補(bǔ)強(qiáng)JMeter在高并發(fā)和監(jiān)控定位方面的能力和體驗(yàn)。本文介紹PTS原生JMeter壓測(cè)的優(yōu)勢(shì)和操作步驟。
使用限制
最大并發(fā)用戶數(shù)不能超過(guò)資源包的并發(fā)規(guī)格,請(qǐng)參見產(chǎn)品價(jià)格。
JMeter壓測(cè)功能和PTS原生功能共享并發(fā)用戶數(shù)的額度。例如,您持有一個(gè)基礎(chǔ)版按量抵扣PTS壓測(cè)資源包(最大并發(fā)用戶數(shù)50000)的資源包,PTS原生壓測(cè)場(chǎng)景中使用了10000并發(fā),那么同時(shí)進(jìn)行的JMeter集成功能的壓測(cè)只能使用40000最大并發(fā)來(lái)啟動(dòng)。
步驟一:創(chuàng)建JMeter壓測(cè)場(chǎng)景
上傳JMeter壓測(cè)文件。
- 登錄PTS控制臺(tái),在左側(cè)導(dǎo)航欄選擇 ,然后單擊JMeter壓測(cè)。
在創(chuàng)建JMeter場(chǎng)景頁(yè)面,輸入場(chǎng)景名。
在場(chǎng)景裝配區(qū)域,單擊圖標(biāo),上傳一個(gè)YAML格式的JMeter壓測(cè)文件,文件名不包含空格字符,后綴名為jmx。
JMX壓測(cè)文件上傳后,PTS會(huì)自動(dòng)為您補(bǔ)充缺失的插件,具體詳情請(qǐng)參見JMeter插件自動(dòng)補(bǔ)全。
單擊上傳文件,添加JMeter腳本、JAR文件(即放置在JMeter的安裝目錄.../lib/ext 下的相關(guān)JAR文件)和其他數(shù)據(jù)文件,例如csv格式的參數(shù)文件等。
重要上傳的同名文件將覆蓋之前上傳的文件。如需對(duì)比文件,可在該文件的操作列,獲取MD5值,與您本地文件的MD5值進(jìn)行對(duì)比,確認(rèn)文件是否變更。
使用限制:
JMX腳本文件:文件大小不超過(guò)2 MB。您可上傳多個(gè)JMX腳本文件,但是壓測(cè)僅能使用一個(gè)JMX腳本,發(fā)起壓測(cè)前必須選中一個(gè)JMX腳本文件。
JAR文件:文件大小不超過(guò)10 MB。上傳之前,請(qǐng)?jiān)诒镜豃Meter環(huán)境調(diào)試JAR文件,確保調(diào)試通過(guò)。
CSV文件:文件大小不超過(guò)60 MB,超過(guò)60M請(qǐng)使用OSS數(shù)據(jù)源功能引入文件。非JMX文件總數(shù)不超過(guò)20個(gè)。
重要準(zhǔn)備CSV文件時(shí),請(qǐng)不要直接修改XLSX文件的后綴。推薦使用Excel、Numbers等軟件導(dǎo)出,程序生成可以使用Apache Commons CSV。
如果JMX腳本中關(guān)聯(lián)了數(shù)據(jù)文件,請(qǐng)務(wù)必將CSV Data Set Config中的Filename改為文件名本身,不要帶路徑(如下圖所示)。否則會(huì)讀取不到數(shù)據(jù)文件。同理,如果使用了__CSVRe函數(shù)或者在JAR中有指定文件,均需使用文件名。
如果您上傳了多個(gè)JMX文件,選中一個(gè)JMX文件作為發(fā)起該壓測(cè)場(chǎng)景使用的JMeter腳本。
可選:為CSV文件選中切分文件,可以保證該文件的數(shù)據(jù)在每個(gè)施壓機(jī)不重復(fù)。不選中該項(xiàng),每個(gè)施壓機(jī)上使用同一份數(shù)據(jù)。具體操作,請(qǐng)參見JMeter使用CSV參數(shù)文件。
選擇是否使用依賴環(huán)境。具體操作,請(qǐng)參見使用環(huán)境。
若選擇是,則需要選擇環(huán)境管理中已創(chuàng)建好的環(huán)境。
若選擇否,則需要選擇JMeter版本。目前支持Apache JMeter 5.0和Java 11。
施壓配置。
您可以參考施壓配置完成施壓配置。
可選:高級(jí)設(shè)置。
高級(jí)設(shè)置包含日志采樣率設(shè)置、DNS配置和分布式適配組件設(shè)置。默認(rèn)關(guān)閉,如果需要配置,請(qǐng)打開開關(guān)。
高級(jí)設(shè)置關(guān)閉的狀態(tài)下:
將會(huì)使用默認(rèn)效果。即日志采樣率1%(圖標(biāo)①);每次循環(huán)清空DNS緩存開關(guān)不開啟,使用系統(tǒng)DNS解析器(圖標(biāo)②),同步定時(shí)器和常數(shù)吞吐量定時(shí)器均為單機(jī)生效(圖標(biāo)③)。
高級(jí)設(shè)置開啟的狀態(tài)下:
日志采樣率設(shè)置
可自定義采樣日志的采樣率,默認(rèn)采樣率為1%。 若需降低采樣率,請(qǐng)?zhí)顚?0,1]區(qū)間的值;若需提升采樣率,請(qǐng)?zhí)顚?1,50]區(qū)間內(nèi)可被10整除的數(shù),例如20。
重要當(dāng)指定大于1%的采樣率時(shí),會(huì)額外收取rate%的費(fèi)用。例如采樣率為20%會(huì)額外收取20%*VUM的費(fèi)用。詳情可見按量計(jì)費(fèi)(后付費(fèi))。
DNS緩存設(shè)置
可選擇每次訪問(wèn)請(qǐng)求是否清空DNS緩存,若需要清空DNS緩存,可選擇使用系統(tǒng)DNS解析器或者自定義DNS解析器。
分布式適配組件設(shè)置
如果您上傳的腳本中有分布式適配組件,例如定時(shí)器(Timer)、控制器(Controller)等,可以對(duì)其進(jìn)行多施壓IP地址的分布式適配設(shè)置,有利于更精準(zhǔn)、有效地進(jìn)行性能測(cè)試。
設(shè)置同步定時(shí)器。若您上傳的JMeter腳本中自帶定時(shí)器(Timer),需要選擇腳本中的設(shè)置值是全局生效或單機(jī)生效。
全局生效:腳本中設(shè)置值為集群整體閾值,會(huì)根據(jù)使用到的IP數(shù)來(lái)拆分到單機(jī)集合閾值上(即單施壓機(jī)閾值為腳本中值/IP數(shù))。假設(shè)共使用到2個(gè)施壓IP,腳本配置集合閾值為1000,單機(jī)閾值即為500。
單機(jī)生效:腳本中設(shè)置值為單臺(tái)施壓機(jī)的閾值,不會(huì)替換腳本內(nèi)容,此時(shí)需要注意并發(fā)量與配置值是否匹配。假設(shè)共使用到2個(gè)施壓IP,腳本配置集合閾值為1000,單機(jī)閾值即為1000,施壓集群整體為2000。
設(shè)置常數(shù)吞吐量定時(shí)器。若您上傳的JMeter腳本中自帶控制器(Controller),需要選擇腳本中的設(shè)置值是全局生效或單機(jī)生效。
全局生效:腳本中設(shè)置值為集群整體閾值,會(huì)根據(jù)使用到的施壓IP數(shù)來(lái)拆分到單機(jī)吞吐量目標(biāo)值上(即單施壓機(jī)閾值為腳本中值/IP數(shù)),假設(shè)使用到2臺(tái)施壓IP地址,并發(fā)為100,腳本上僅1個(gè)線程組,其吞吐量目標(biāo)為每分鐘100,計(jì)算模式為當(dāng)前線程,此時(shí)場(chǎng)景的總目標(biāo)每分鐘吞吐量為2×(100并發(fā)/2 )×(100/2)=5000。
單機(jī)生效:腳本中設(shè)置值為單臺(tái)施壓機(jī)的目標(biāo)值,不會(huì)替換腳本內(nèi)容,需要注意并發(fā)量級(jí)與配置值是否匹配。假設(shè)使用到2臺(tái)施壓IP,并發(fā)為100,腳本上僅1個(gè)線程組,其吞吐量目標(biāo)為每分鐘100,計(jì)算模式為當(dāng)前線程,此時(shí)場(chǎng)景的總目標(biāo)每分鐘吞吐量為2×(100并發(fā)/2)×100=10000。
可選:添加云資源監(jiān)控。
通過(guò)添加監(jiān)控的方式,您可以在壓測(cè)過(guò)程和壓測(cè)報(bào)告中快速查看相應(yīng)的監(jiān)控?cái)?shù)據(jù)。具體操作及監(jiān)控?cái)?shù)據(jù)的查看步驟,請(qǐng)參見云資源監(jiān)控。默認(rèn)關(guān)閉,如需要配置,請(qǐng)打開開關(guān)。
可選:添加其他信息。
您可在此添加壓測(cè)負(fù)責(zé)人和備注信息。默認(rèn)關(guān)閉,如需配置請(qǐng)打開開關(guān)。
步驟二:開始?jí)簻y(cè)
完成上述基本配置之后,單擊調(diào)試場(chǎng)景,提前檢查網(wǎng)絡(luò)連通、插件完整性、腳本配置的正確性等問(wèn)題,避免壓測(cè)啟動(dòng)失敗。具體詳情,請(qǐng)參見調(diào)試場(chǎng)景。
單擊保存去壓測(cè)。并在彈出的對(duì)話框中選擇執(zhí)行周期。
選擇立即執(zhí)行。待壓測(cè)準(zhǔn)備完成,操作頁(yè)會(huì)進(jìn)入壓測(cè)狀態(tài)。
選擇定時(shí)壓測(cè)。以定時(shí)任務(wù)的方式啟動(dòng)壓測(cè),請(qǐng)參見定時(shí)壓測(cè)。
可選:壓測(cè)過(guò)程中,您可以監(jiān)控壓測(cè)數(shù)據(jù),進(jìn)行場(chǎng)景調(diào)速等操作。
數(shù)據(jù)信息
數(shù)據(jù)信息 | 說(shuō)明 |
實(shí)時(shí)VUM | 本次壓測(cè)消耗的資源總數(shù),單位是VUM(每虛擬用戶每分鐘)。 |
請(qǐng)求成功率(%) | 所有Agent統(tǒng)計(jì)周期內(nèi)全場(chǎng)景請(qǐng)求成功率。 |
平均RT(成功/失敗) |
|
TPS | 所有Agent統(tǒng)計(jì)周期內(nèi)的總請(qǐng)求數(shù)除以時(shí)間(單位:秒(s))所得。 |
異常數(shù) | 請(qǐng)求異常的數(shù)量。導(dǎo)致請(qǐng)求異常的可能原因較多,常見的例如連接超時(shí)、請(qǐng)求超時(shí)等。 |
流量(請(qǐng)求/響應(yīng))/s | 施壓機(jī)發(fā)送請(qǐng)求的流量和接收響應(yīng)的流量。 |
并發(fā)(當(dāng)前/最大) | 施壓的并發(fā)值。若在壓測(cè)過(guò)程中設(shè)置了場(chǎng)景調(diào)速,會(huì)分別顯示當(dāng)前并發(fā)值和配置最大并發(fā)值。如果在預(yù)熱階段則未達(dá)到配置并發(fā),預(yù)熱結(jié)束后即為配置的并發(fā)值。 單擊調(diào)速,并輸入需要并發(fā)的數(shù)字,可在壓測(cè)過(guò)程中進(jìn)行場(chǎng)景并發(fā)的調(diào)整。 |
總請(qǐng)求數(shù) | 整個(gè)場(chǎng)景在壓測(cè)過(guò)程中發(fā)出去的總請(qǐng)求數(shù)。 |
監(jiān)控?cái)?shù)據(jù)的來(lái)源基于Backend Listener進(jìn)行了簡(jiǎn)單的聚合計(jì)算。施壓Agent的統(tǒng)計(jì)采樣周期是15s,數(shù)據(jù)匯總計(jì)算的周期也是15s,故可能會(huì)有數(shù)據(jù)延遲的情況。
配置信息
配置信息頁(yè)羅列了場(chǎng)景配置中的基本信息,包括壓力來(lái)源、配置時(shí)長(zhǎng)、流量模型、指定IP數(shù)等信息。
壓測(cè)信息
在壓測(cè)詳情頁(yè)簽下,單擊單個(gè)鏈路的右側(cè)查看圖表,查看其TPS、成功率、響應(yīng)時(shí)間、流量等實(shí)時(shí)數(shù)據(jù)。
單擊施壓機(jī)性能頁(yè)簽,顯示了壓測(cè)過(guò)程中所有施壓機(jī)的CPU使用率、Load5、內(nèi)存利用率、網(wǎng)絡(luò)流量的時(shí)序曲線等信息。您還可以篩選查看特定施壓機(jī)的性能信息。
若您添加了ECS監(jiān)控、SLB監(jiān)控、RDS監(jiān)控和ARMS監(jiān)控等,可以單擊云資源監(jiān)控頁(yè)簽,查看相關(guān)監(jiān)控信息。具體操作,請(qǐng)參見查看監(jiān)控詳情。
采樣日志詳情
選擇采樣日志頁(yè)簽,可根據(jù)壓測(cè)Sampler、響應(yīng)狀態(tài)、RT范圍等篩選日志,查看日志詳情。
根據(jù)壓測(cè)Sampler、響應(yīng)狀態(tài)等篩選日志。單擊對(duì)應(yīng)的日志操作列的單擊查看詳情。
在日志詳情對(duì)話框的General 頁(yè)簽下,查看日志字段和字段值。在對(duì)話框右上角切換顯示格式:通用或HTTP協(xié)議樣式。
如果JMeter腳本中配置了從HTML文件嵌入資源(Embedded Resources from HTML Files),日志詳情中會(huì)出現(xiàn)子請(qǐng)求詳情頁(yè)簽。
通過(guò)選擇特定的子請(qǐng)求,可篩選出對(duì)應(yīng)的請(qǐng)求日志。
Timing瀑布流頁(yè)簽,顯示總請(qǐng)求和每一個(gè)子請(qǐng)求的耗時(shí)情況。
調(diào)用鏈視圖頁(yè)簽展示了被壓測(cè)接口上下游的調(diào)用鏈路詳情。
步驟三:查看壓測(cè)報(bào)告
在壓測(cè)停止之后,系統(tǒng)會(huì)自動(dòng)收集壓測(cè)過(guò)程中的數(shù)據(jù),形成壓測(cè)報(bào)告,展現(xiàn)JMeter壓測(cè)場(chǎng)景和具體指令的壓測(cè)動(dòng)態(tài)信息。
- 登錄PTS控制臺(tái),在左側(cè)導(dǎo)航欄選擇 。
在報(bào)告列表頁(yè)面,選擇JMeter場(chǎng)景類型。在目標(biāo)報(bào)告的操作列,單擊查看報(bào)告。具體操作,請(qǐng)參見查看JMeter壓測(cè)報(bào)告。
說(shuō)明趨勢(shì)圖中,每個(gè)點(diǎn)數(shù)據(jù)的統(tǒng)計(jì)采樣周期是15s,最終數(shù)據(jù)報(bào)告上可能初期會(huì)有數(shù)據(jù)延遲的情況。壓測(cè)報(bào)告數(shù)據(jù)保留30天,如有需要可導(dǎo)出報(bào)告本地保存。
(可選)步驟四:導(dǎo)出壓測(cè)報(bào)告
如您需要,可以將當(dāng)前壓測(cè)報(bào)告導(dǎo)出至本地。
在報(bào)告詳情頁(yè)面,單擊報(bào)告導(dǎo)出。
選擇有水印版本或無(wú)水印版本,可將壓測(cè)報(bào)告(PDF)下載至本地。
原生JMeter壓測(cè)的場(chǎng)景示例
PTS的原生JMeter壓測(cè)適用于以下幾種場(chǎng)景。具體使用場(chǎng)景示例,請(qǐng)參見JMeter模擬上傳。
需要高并發(fā)分布式壓測(cè)。
需要壓測(cè)時(shí)觀測(cè)實(shí)時(shí)秒級(jí)監(jiān)控,壓測(cè)后自動(dòng)生成壓測(cè)報(bào)告。
需要統(tǒng)一管理JMeter腳本、JMeter環(huán)境依賴。