您好,登錄后才能下訂單哦!
作為一個純 JAVA 的GUI應用,JMeter對于CPU和內存的消耗還是很驚人的,所以當需要模擬數以千計的并發用戶時,使用單臺機器模擬所有的并發用戶就有些力不從心,甚至還會引起JAVA內存溢出的錯誤。
不過,JMeter也可以像 LoadRunner 一樣通過使用多臺機器運行所謂的代理來分擔負載產生器自身的壓力,并借此來獲取更大的并發用戶數,我們只需手動配置一下即可。
1、在所有期望運行JMeter作為負載產生器的機器上安裝JMeter,并確定其中一臺機器作為控制器,其他的機器作為代理。下面示例中我們以windows服務器為控制器,另兩臺linux服務器作為代理。
然后運行所有代理機器上的JMeter-server.bat文件(linux服務器上運行Jmeter-server)
假定我們使用兩臺機器172.16.129.155和172.16.129.43作為代理。
2、在作為Controller控制的windows機器上的操作:
在Controller控制機器的JMeter安裝目錄下找到 bin 目錄,找到 jmeter.properties 這個文件,使用記事本或者其他文字編輯工具打開它;
在打開的文件中查找“remote_hosts=”這個字符串,找到這樣一行“remote_hosts=127.0.0.1”。其中的 127.0.0.1 表示運行JMeter代理的機器,把它修改為我們需要用到的slave代理機器的ip地址加默認端口號1099:這里需要修改為
remote_hosts=172.16.129.155:1099,172.16.129.43:1099(兩臺代理服務器之間用,隔開)
再把下面幾項去掉前面的注釋(#):
server_port=1099
client.rmi.localport=0
server.rmi.port=1234
server.rmi.localport=1099
然后保存文件。
在Controller控制機器的JMeter安裝目錄下找到 bin 目錄,再找到 jmeter.bat 這個文件,使用記事本等其他文字編輯工具打開它;
新增set rmi_host=-Djava.rmi.server.hostname=本機ip(控制器ip)
修改
Set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%
然后保存。
3、在作為代理服務器linux服務器上的操作:
修改bin目錄下的jmeter-server文件,
去掉#
RMI_HOST_DEF=-Djava.rmi.server.hostname=172.16.129.155
(避免了虛擬機中出現的兩個ip的情況)
PS:
代理服務器中的hostname和/etc/hosts里面ip地址對應的hostname要一致
然后保存。
對要進行分布式測試代理機器上需要添加jmeter環境變量:
命令 vim /etc/profile
insert
在文檔最后,添加:
export PATH="/jmeter/apache-jmeter-2.12/bin:$PATH"
esc : w q
保存,退出,然后運行:
#source /etc/profile
不報錯則成功。
運行env命令查看全部環境變量,看jmeter環境是否安裝成功。(或者輸入jmeter -v命令)
(windows上相當于添加用戶變量JMETER_HOME=d:\jmeter,系統變量中的path中添加d:\jmeter\bin。)
在bin目錄下輸入命令
chmod 777 jmeter-server
chmod 777 jmeter
防止權限禁止denied
4、確定代理服務器都可以ping到所需要測試的接口的機器,然后啟用所有代理服務器上的jmeter-server
如圖為成功啟動代理服務器上的jmeter-server。
啟動控制器機器上的JMeter,并進入啟動 ->遠程啟動菜單項。就會看到我們剛才添加的兩個代理的地址,選中即可運行,如果想同時啟動所有代理,選擇遠程全部啟動即可。
控制器上的jmeter會收到指示
代理機上開始測試和完成測試的指示
5、注意結果
JMeter遠程啟動測試中出現結果的響應數據為空,原因是:
分布式測試中,通過遠程啟動代理服務器,注重的而是高并發,默認查看結果樹中的響應數據為空,只有錯誤信息會被報回。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。