Jmeter可通過一臺控制機(controller),控制多臺負載機(slaver)并發(fā)測試靡羡。盡量保持兩者的Jmeter和java版本一致俊性,否則可能出現(xiàn)運行錯誤。本文基于linux系統(tǒng)搭建Jmeter磅废,進行分布式負載介紹纳像。
控制機配置
修改jmeter.properties文件.
remote_hosts=12.12.12.12:1099 #IP地址改為遠程負載機地址并附加通信端口,若由多臺負載機,IP地址用逗號隔開.
負載機配置
修改jmeter.properties文件.配置端口.若啟動某個端口,需在防火墻打開該端口.
server_port=1099
server.rmi.localport=1099
開啟端口:iptables -I INPUT -p TCP —dport 1029 -j ACCEPT
啟動分布式負載測試
修改好配置后,先啟動負載機,再啟動控制機.
負載機:/opt/jmeter/apache-jmeter-4.0/jmeter-server
控制機可通過GUI和non-GUI方式調(diào)用負載機工作.推薦使用non-GUI方式,節(jié)省資源,因為報告等內(nèi)容較多,容易損耗寶貴的系統(tǒng)資源.命令行如下:
jmeter -n -t test.jmx -l report.jtl -r
-n 表示jmeter通過NO-GUI方式運行
-t 后跟測試腳本
-l 輸出測試結(jié)果日志.生成格式為jtl,可用GUI打開該日志查看結(jié)果
-r 啟動遠程負載機
關(guān)于控制機接收到的日志荆烈,以GUI方式打開拯勉,發(fā)現(xiàn)沒有response_data的數(shù)據(jù)憔购。這是jmeter默認的日志格式,不包含response_data等信息玫鸟,是為了盡可能減少系統(tǒng)資源消耗,把更多資源用于形成負載妥曲。若確實需要查看日志的該類信息,可修改jmeter.properties和user.properties兩個文件檐盟。分別做如下改動:
jmeter.properties更改:
user.properties文件最后添加:
jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true
常見問題
1.控制機啟動遠程測試,提示’沒有到主機的路由’.
檢查負載機的網(wǎng)絡配置,端口配置,是否用合適的公網(wǎng)ip和端口在監(jiān)聽.若發(fā)現(xiàn)負載機用私網(wǎng)地址監(jiān)聽(若沒有指定網(wǎng)卡,jmeter是任意選擇一個網(wǎng)卡進行監(jiān)聽),修改jmeter-server文件:
RMI_HOST_DEF=-Djava.rmi.server.hostname=12.12.12.12 #改為合適的公網(wǎng)ip
網(wǎng)絡IP檢查為合適IP,仍提示沒有到主機的路由,查看負載機的日志jmeter-server.log.如發(fā)現(xiàn)所用ip仍為私網(wǎng)ip或127.0.1.1的回環(huán)地址,可修改hosts文件.在開頭添加
12.12.12.12 localhost
2.負載機接受到指令,并運行測試腳本,但控制機沒有收到結(jié)果,一直等待測試結(jié)束.
t初步推測為控制機的相應端口沒有打開.telnet控制機端口,發(fā)現(xiàn)確實沒有開,然后嘗試打開該端口,重新測試.然而對于不太了解防火墻的我來說,最簡單的方法莫過于直接關(guān)閉防火墻.這樣基本都能解決問題.本人用的是centos7.4,關(guān)閉防火墻用如下命令:
systemctl stop firewalld.service