一仁期、由于Jmeter是一個純Java的應(yīng)用藏杖,用GUI模式運行壓力測試時,對客戶端的資源消耗是很大的北启,所以在進行正式的壓測時一定要使用非GUI模式運行卜朗。如果并發(fā)數(shù)很高或者客戶端的硬件資源比較一般的話拔第,采取的方法是以Server模式用多個Client進行分布式測試。
二场钉、新建 JMETER_HOME 環(huán)境變量蚊俺,值為D:\Software\apache-jmeter-5.0\apache-jmeter-5.0,在Path加入:%JMETER_HOME%\bin;
三逛万、CMD->jmeter泳猬,可以直接運行Jmeter,jmeter -v查看版本號:
四宇植、官方提示:不要使用GUI模式進行負載測試得封,GUI模式僅用于測試創(chuàng)建和測試調(diào)試。對于負載測試当纱,請使用非GUI模式:jmeter -n -t [jmx文件] -l [results文件] -e -o [Path to web report文件夾]呛每,可以節(jié)省系統(tǒng)資源,能夠產(chǎn)生更大的負載坡氯,可以通過命令行參數(shù)對測試場景進行更精細的配置。
五洋腮、jmeter部分參數(shù)解釋:
1箫柳、-v:打印版本信息;
2啥供、-p {argument}:運行時指定property文件悯恍,默認是使用JMETER_HOME/bin目錄下的jmeter.properties,如果用戶自定義有其它的配置伙狐,在這里加上涮毫;
3、-q {argument}:指定其它配置文件贷屎,如JVM參數(shù)等等罢防;
4、-t {argument}:要運行的jmeter腳本唉侄,.jmx文件咒吐;
5、-l {argument}:記錄采樣器Log的文件属划,保存JTL 測試結(jié)果文件的路徑恬叹;
6、-j {argument}:指定記錄jmeter log的文件同眯,默認為jmeter.log绽昼;
7、-n:以nongui模式(非GUI模式)運行jmeter须蜗;
8硅确、-s:運行JMeter server目溉;
9、-H {argument}:代理服務(wù)器地址疏魏;
10停做、-P:代理服務(wù)器端口;
11大莫、-J {argument}={value}:定義額外的Jmeter屬性properties蛉腌;
12、-G, --globalproperty {argument}={value}:定義發(fā)送給server的全局屬性只厘;
13烙丛、-D, --systemproperty {argument}={value}:定義系統(tǒng)屬性;
14羔味、-r, --runremote (non-GUI only):啟動遠程server(在jmeter properties中定義好的remote_hosts)河咽,僅在non-gui模式下此參數(shù)才生效;
15赋元、-R, --remotestart? server1,... (non-GUI only):啟動遠程server(如果使用此參數(shù)忘蟹,將會忽略properties中中定義的remote_hosts);
16搁凸、-d, --homedir {argument}:Jmeter運行的主目錄媚值;
17、-X, --remoteexit:測試結(jié)束時护糖,退出(在non-gui模式下)褥芒;
18、-g {argument}:通過csv文件來創(chuàng)建dashboard報告嫡良;
19锰扶、-o {argument}:運行結(jié)束后創(chuàng)建dashboard報告;
20寝受、-e {argument}:在哪個目錄創(chuàng)建dashboard報告坷牛。
六、分布式:Jmeter的集群模式可以讓我們將多臺機器聯(lián)合起來一起產(chǎn)生負載羡蛾,從而彌補單臺機器負載生成能力不足的問題漓帅。假設(shè)我們的測試計劃會產(chǎn)生100個threads,我們使用5臺機器進行分布式測試的時候痴怨,一共會產(chǎn)生100 * 5 = 500的負載忙干。
七、分布式測試的思想為:一臺master主機(調(diào)度機或者稱作控制機)初始化測試并控制多個slave系統(tǒng)(執(zhí)行機或者稱作負載機)浪藻。master捐迫,以GUI模式運行,同時控制測試的運行爱葵,就是client施戴,啟動腳本所在的那臺機器反浓。master也可以參與腳本的運行,master同時也是一臺負載機赞哗。slave雷则,運行客戶端程序(Agent:jmeter-server.bat),從master接收指令肪笋、向目標服務(wù)器發(fā)送請求月劈,就是server,真正執(zhí)行test plan的機器藤乙。
slave首先啟動Agent程序猜揪,待master連接;
master連接上slave坛梁;
master發(fā)送指令(腳本及啟動命令)啟動線程而姐;
slave運行腳本,回傳狀態(tài)(包括測試結(jié)果)划咐;
master收集結(jié)果并顯示拴念。
八、注意事項:
1褐缠、關(guān)閉防火墻丈莺;
2、所有的客戶端都在同一個子網(wǎng)內(nèi)送丰;
3、如果使用192.x.x.x或者10.x.x.x這樣的IP地址弛秋,server也必須在同一子網(wǎng)內(nèi)器躏,如果server沒有使用192或者10這樣的IP地址,(server同client不在同一子網(wǎng)內(nèi))將不會有任何問題蟹略;
4登失、確保Jmeter可以訪問到server;
5挖炬、確保各系統(tǒng)的Jmeter版本保持一致揽浙,不同版本的Jmeter將不能很好的工作。
九意敛、設(shè)置jmeter client & server
1馅巷、設(shè)置jmeter-server:用文本編輯器打開JMETER_HOME/bin目錄下的jmeter.properties文件,添加運行jmeter-server的主機IP到remote-hosts草姻,如果你不希望你的客戶端也作為jmeter-server運行的話钓猬,把localhost從上面的配置中移除。
remote_hosts=10.0.0.158, 10.0.0.140,127.0.0.1
2撩独、將配置在remote_hosts中的機器上的jmeter-server啟動(Windows以管理員身份運行JMETER_HOME/bin目錄下的jmeter-server.bat)敞曹。
十账月、分布式測試
1、方式一:在客戶端以GUI模式啟動jmeter澳迫,然后打開或者創(chuàng)建一個測試腳本局齿, 從GUI模式啟動所有的遠程server,點擊橄登,運行-遠程全部啟動抓歼,也可以單獨啟動某一個jmeter-server 。
2示绊、方式二:以非GUI模式啟動jmeter
2.1锭部、新建一個文件夾,存放jmeter腳本面褐,比如baidu.jmx拌禾;
2.2、在當前文件夾下打開cmd窗口(shift+鼠標右鍵選擇在此處打開命令窗口)展哭,輸入命令:
jmeter -n -t baidu.jmx -l res.jtl -e -o ./report
2.3湃窍、運行結(jié)果,就是生成res.jtl文件匪傍,jmeter.log日志文件和report文件夾: