Jmeter進(jìn)行性能測(cè)試時(shí)多臺(tái)負(fù)載機(jī)的配置方法

Jmeter進(jìn)行性能測(cè)試時(shí)多臺(tái)負(fù)載機(jī)的配置方法

標(biāo)簽:jmeter配置多機(jī)負(fù)載測(cè)試

2017-01-25 13:53682人閱讀評(píng)論(0)收藏舉報(bào)

分類:

Jmeter(6)

版權(quán)聲明:本文為博主原創(chuàng)文章,未經(jīng)博主允許不得轉(zhuǎn)載。

Jmeter?是Java應(yīng)用,對(duì)于CPU和內(nèi)存的消耗比較大,因此,當(dāng)需要模擬數(shù)以千計(jì)的并發(fā)用戶時(shí),使用單臺(tái)機(jī)器模擬所有的并發(fā)用戶就有些力不從心,甚至?xí)餔AVA內(nèi)存溢出錯(cuò)誤。為了讓jmeter工具提供更大的負(fù)載能力,jmeter短小精悍一有了使用多臺(tái)機(jī)器同時(shí)產(chǎn)生負(fù)載的機(jī)制。

那么,是如何實(shí)現(xiàn)多臺(tái)負(fù)載機(jī)同時(shí)運(yùn)行的呢?當(dāng)然不會(huì)多個(gè)人坐在多臺(tái)負(fù)載機(jī)面前,一喊開(kāi)始,大家同時(shí)啟動(dòng)jmeter。這種方式很笨,也很難達(dá)到真正的同步。其實(shí),我們通過(guò)單個(gè)jmeter?客戶端就可以控制多個(gè)遠(yuǎn)程的jmeter服務(wù)器,使它們同步的對(duì)服務(wù)器進(jìn)行壓力測(cè)試。

通過(guò)遠(yuǎn)程運(yùn)行jmeter,測(cè)試人員可以跨越多臺(tái)低端計(jì)算機(jī)復(fù)制測(cè)試,這樣就可以模擬一個(gè)比較大的服務(wù)器壓力,一個(gè)jmeter客戶端實(shí)例,理論上可以控制任意多的遠(yuǎn)程jmeter實(shí)例,并通過(guò)他們收集測(cè)試數(shù)據(jù)。這樣一樣,就有了如下特性:

*???保存測(cè)試采樣數(shù)據(jù)到本地機(jī)器

*???通過(guò)單臺(tái)機(jī)器管理多個(gè)jmeter執(zhí)行引擎。

*???沒(méi)有必要將測(cè)試計(jì)劃復(fù)制到每一臺(tái)機(jī)器,jmeter?GUI客戶端會(huì)將它發(fā)往每一臺(tái)jmeter服務(wù)器。

*???每一臺(tái)jmeter遠(yuǎn)程服務(wù)器都執(zhí)行相同的測(cè)試計(jì)劃,jmeter不會(huì)在執(zhí)行期間做負(fù)載均衡,每一臺(tái)服務(wù)器都會(huì)完整地運(yùn)行測(cè)試計(jì)劃。

在1.4G?Hz~3GHz?的CPU?、1GB?內(nèi)存的?JMeter?客戶端上,可以處理線程?100~300。但是Web?Service?例外。XML處理是?CPU?運(yùn)算密集的,會(huì)迅速消耗掉所有的CPU?。一般來(lái)說(shuō),以XML技術(shù)為核心的應(yīng)用系統(tǒng),其性能將是普通Web?應(yīng)用的?10%~25%?。另外,如果所有負(fù)載由一臺(tái)機(jī)器產(chǎn)生,網(wǎng)卡和交換機(jī)端口都可能產(chǎn)生瓶頸,所以一個(gè)JMeter?客戶端線程數(shù)不應(yīng)超過(guò)?100。

采用JMeter?遠(yuǎn)程模式并不會(huì)比獨(dú)立運(yùn)行相同數(shù)目的非GUI?測(cè)試更耗費(fèi)資源。但是,如果使用大量的JMeter?遠(yuǎn)程服務(wù)器,可能會(huì)導(dǎo)致客戶端過(guò)載,或者網(wǎng)絡(luò)連接發(fā)生擁塞。

使用多臺(tái)機(jī)器產(chǎn)生負(fù)載的操作步驟如下:

(1)在所有期望運(yùn)行jmeter作為?負(fù)載生成器的機(jī)器上安裝jmeter,?并確定其中一臺(tái)機(jī)器作為?controller?,其他的的機(jī)器作為agent?。

(2)?運(yùn)行所有?agent?機(jī)器上的jmeter-server?文件(假定使用兩臺(tái)機(jī)器192.168.9.99 和192.168.9.130 作為agent)

(3)在controller機(jī)器的jmeter的bin目錄下,找到j(luò)meter.properties?文件,編輯該文件:

查找:

remote_hosts=127.0.0.1

修改為:

remote_hosts=192.168.9.99:1099,192.168.9.130:1099

這里要特別注意端口后,有些資料說(shuō)明端口1644為jmeter的controller?和agent?之間進(jìn)行通信的默認(rèn)RMI端口號(hào),但是在測(cè)試時(shí)發(fā)現(xiàn),設(shè)置為1644運(yùn)行不成功,改成1099后運(yùn)行通過(guò)。另外還要留意agent的機(jī)子是否開(kāi)啟了防火墻等。

(4)啟動(dòng)controller?機(jī)子上的jmeter應(yīng)用jmeter.bat,選擇菜單“運(yùn)行”--->“遠(yuǎn)程啟動(dòng)”,來(lái)分別啟動(dòng)agent?,也可以直接選擇“遠(yuǎn)程全部啟動(dòng)”來(lái)將所有的agent啟動(dòng)。

遇到的常見(jiàn)問(wèn)題:

1、在Controller端上控制某臺(tái)機(jī)器Run,提示"Bad call to remote host"。

解決方法:檢查被控制機(jī)器上的jmeter-server有沒(méi)有啟動(dòng),或者JMeter.properties中remote_hosts的配置錯(cuò)誤。

2、Agent機(jī)器啟動(dòng)Jmeter_server.bat時(shí),后臺(tái)提示:"could not find ApacheJmeter_core.jar"

解決方法:確定在Agent機(jī)器安裝jdk,并設(shè)置環(huán)境變量

3、遠(yuǎn)程啟動(dòng)時(shí),報(bào)錯(cuò):

ERROR - jmeter.gui.action.RemoteStart: Failed to initialise remote engine java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:

java.NET.ConnectException: Connection refused: connect

at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)

at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)

at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)

at sun.rmi.server.UnicastRef.newCall(Unknown Source)

at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)

at java.rmi.Naming.lookup(Unknown Source)

at org.apache.jmeter.engine.ClientJMeterEngine.getEngine(ClientJMeterEngine.java:54)

at org.apache.jmeter.engine.ClientJMeterEngine.(ClientJMeterEngine.java:67)

at org.apache.jmeter.gui.action.RemoteStart.doRemoteInit(RemoteStart.java:180)

at org.apache.jmeter.gui.action.RemoteStart.doAction(RemoteStart.java:80)

at org.apache.jmeter.gui.action.ActionRouter.performAction(ActionRouter.java:81)

這個(gè)問(wèn)題終于被我解決了,其實(shí)原因好簡(jiǎn)單呀。只要將本機(jī)的jmter-server.bat執(zhí)行即可。要是在jmeter.properties配置的地方寫了127.0.0.1 的話 就要開(kāi)本機(jī)的 jmeter-sever.bat. 不寫的話 就不用開(kāi)了

4、查看1099端口是否被占用

netstat -ano | findstr "1099"

tasklist | findstr "1099"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容