一、由于Jmeter是一個(gè)純Java的應(yīng)用,用GUI模式運(yùn)行壓力測試時(shí),對(duì)客戶端的資源消耗是很大的,所以在進(jìn)行正式的壓測時(shí)一定要使用非GUI模式運(yùn)行。如果并發(fā)數(shù)很高或者客戶端的硬件資源比較一般的話,采取的方法是以Server模式用多個(gè)Client進(jìn)行分布式測試。
二、新建 JMETER_HOME 環(huán)境變量,值為D:\Software\apache-jmeter-5.0\apache-jmeter-5.0,在Path加入:%JMETER_HOME%\bin;
三、CMD->jmeter,可以直接運(yùn)行Jmeter,jmeter -v查看版本號(hào):

四、官方提示:不要使用GUI模式進(jìn)行負(fù)載測試,GUI模式僅用于測試創(chuàng)建和測試調(diào)試。對(duì)于負(fù)載測試,請(qǐng)使用非GUI模式:jmeter -n -t [jmx文件] -l [results文件] -e -o [Path to web report文件夾],可以節(jié)省系統(tǒng)資源,能夠產(chǎn)生更大的負(fù)載,可以通過命令行參數(shù)對(duì)測試場景進(jìn)行更精細(xì)的配置。

五、jmeter部分參數(shù)解釋:
1、-v:打印版本信息;
2、-p {argument}:運(yùn)行時(shí)指定property文件,默認(rèn)是使用JMETER_HOME/bin目錄下的jmeter.properties,如果用戶自定義有其它的配置,在這里加上;
3、-q {argument}:指定其它配置文件,如JVM參數(shù)等等;
4、-t {argument}:要運(yùn)行的jmeter腳本,.jmx文件;
5、-l {argument}:記錄采樣器Log的文件,保存JTL 測試結(jié)果文件的路徑;
6、-j {argument}:指定記錄jmeter log的文件,默認(rèn)為jmeter.log;
7、-n:以nongui模式(非GUI模式)運(yùn)行jmeter;
8、-s:運(yùn)行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):啟動(dòng)遠(yuǎn)程server(在jmeter properties中定義好的remote_hosts),僅在non-gui模式下此參數(shù)才生效;
15、-R, --remotestart? server1,... (non-GUI only):啟動(dòng)遠(yuǎn)程server(如果使用此參數(shù),將會(huì)忽略properties中中定義的remote_hosts);
16、-d, --homedir {argument}:Jmeter運(yùn)行的主目錄;
17、-X, --remoteexit:測試結(jié)束時(shí),退出(在non-gui模式下);
18、-g {argument}:通過csv文件來創(chuàng)建dashboard報(bào)告;
19、-o {argument}:運(yùn)行結(jié)束后創(chuàng)建dashboard報(bào)告;
20、-e {argument}:在哪個(gè)目錄創(chuàng)建dashboard報(bào)告。
六、分布式:Jmeter的集群模式可以讓我們將多臺(tái)機(jī)器聯(lián)合起來一起產(chǎn)生負(fù)載,從而彌補(bǔ)單臺(tái)機(jī)器負(fù)載生成能力不足的問題。假設(shè)我們的測試計(jì)劃會(huì)產(chǎn)生100個(gè)threads,我們使用5臺(tái)機(jī)器進(jìn)行分布式測試的時(shí)候,一共會(huì)產(chǎn)生100 * 5 = 500的負(fù)載。
七、分布式測試的思想為:一臺(tái)master主機(jī)(調(diào)度機(jī)或者稱作控制機(jī))初始化測試并控制多個(gè)slave系統(tǒng)(執(zhí)行機(jī)或者稱作負(fù)載機(jī))。master,以GUI模式運(yùn)行,同時(shí)控制測試的運(yùn)行,就是client,啟動(dòng)腳本所在的那臺(tái)機(jī)器。master也可以參與腳本的運(yùn)行,master同時(shí)也是一臺(tái)負(fù)載機(jī)。slave,運(yùn)行客戶端程序(Agent:jmeter-server.bat),從master接收指令、向目標(biāo)服務(wù)器發(fā)送請(qǐng)求,就是server,真正執(zhí)行test plan的機(jī)器。
slave首先啟動(dòng)Agent程序,待master連接;
master連接上slave;
master發(fā)送指令(腳本及啟動(dòng)命令)啟動(dòng)線程;
slave運(yùn)行腳本,回傳狀態(tài)(包括測試結(jié)果);
master收集結(jié)果并顯示。
八、注意事項(xiàng):
1、關(guān)閉防火墻;
2、所有的客戶端都在同一個(gè)子網(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))將不會(huì)有任何問題;
4、確保Jmeter可以訪問到server;
5、確保各系統(tǒng)的Jmeter版本保持一致,不同版本的Jmeter將不能很好的工作。
九、設(shè)置jmeter client & server
1、設(shè)置jmeter-server:用文本編輯器打開JMETER_HOME/bin目錄下的jmeter.properties文件,添加運(yùn)行jmeter-server的主機(jī)IP到remote-hosts,如果你不希望你的客戶端也作為jmeter-server運(yùn)行的話,把localhost從上面的配置中移除。
remote_hosts=10.0.0.158, 10.0.0.140,127.0.0.1
2、將配置在remote_hosts中的機(jī)器上的jmeter-server啟動(dòng)(Windows以管理員身份運(yùn)行JMETER_HOME/bin目錄下的jmeter-server.bat)。
十、分布式測試
1、方式一:在客戶端以GUI模式啟動(dòng)jmeter,然后打開或者創(chuàng)建一個(gè)測試腳本, 從GUI模式啟動(dòng)所有的遠(yuǎn)程server,點(diǎn)擊,運(yùn)行-遠(yuǎn)程全部啟動(dòng),也可以單獨(dú)啟動(dòng)某一個(gè)jmeter-server 。

2、方式二:以非GUI模式啟動(dòng)jmeter
2.1、新建一個(gè)文件夾,存放jmeter腳本,比如baidu.jmx;
2.2、在當(dāng)前文件夾下打開cmd窗口(shift+鼠標(biāo)右鍵選擇在此處打開命令窗口),輸入命令:
jmeter -n -t baidu.jmx -l res.jtl -e -o ./report
2.3、運(yùn)行結(jié)果,就是生成res.jtl文件,jmeter.log日志文件和report文件夾:

