您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源性能測(cè)試工具 > Jmeter
性能測(cè)試之JMeter遠(yuǎn)程模式
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2016/9/14 13:50:29 ] 推薦標(biāo)簽:性能測(cè)試工具 Jmeter

  事實(shí)上,你的JMeter客戶端機(jī)器是不能表現(xiàn)出完美的壓力請(qǐng)求,來(lái)模擬足夠多的用戶或由于網(wǎng)絡(luò)限制去向服務(wù)施加壓力,一種解決方法是通過(guò)一個(gè)JMeter去控制多個(gè)/遠(yuǎn)程JMeter。通過(guò)運(yùn)行JMeter的遠(yuǎn)程模式,你可以通過(guò)多個(gè)低配制的電腦復(fù)制測(cè)試計(jì)劃用于模擬一個(gè)大數(shù)據(jù)量的壓力并發(fā)在服務(wù)器上。一個(gè)JMeter客戶端實(shí)例可以控制多個(gè)遠(yuǎn)程JMeter實(shí)例,并收集所有數(shù)據(jù)信息。特點(diǎn)如下:
  · 保存測(cè)試樣例在本機(jī)電腦
  · 通過(guò)一臺(tái)機(jī)器來(lái)管理多臺(tái)JMeter測(cè)試機(jī)
  · 不需要復(fù)制測(cè)試計(jì)劃到每一臺(tái)JMeter測(cè)試機(jī)-JMeter客戶端會(huì)發(fā)送至所有的服務(wù)器
  提示: 相同的測(cè)試計(jì)劃將會(huì)被運(yùn)行在所有的服務(wù)器中。JMeter不會(huì)在服務(wù)器間分發(fā)壓力,每一個(gè)均會(huì)完整執(zhí)行測(cè)試計(jì)劃。因此,如果你設(shè)置了1000個(gè)線程并有6個(gè)JMeter服務(wù),你將會(huì)完成6000線程注入。
  然而,遠(yuǎn)程模式比獨(dú)立運(yùn)行相同數(shù)量的無(wú)UI測(cè)試使用更多的資源。如果許多服務(wù)實(shí)例被使用,JMeter客戶端會(huì)超負(fù)載,直到達(dá)到網(wǎng)絡(luò)鏈接的上限。通過(guò)使用 剝離模式 可以得到提升(見(jiàn)下文),但你可以一直查看是否你的JMeter是否超負(fù)載。
  請(qǐng)注意,當(dāng)你可以在你的應(yīng)用程序服務(wù)器上執(zhí)行JMeter測(cè)試時(shí),你需要知道有一件事實(shí)將有會(huì)額外的消耗在你的應(yīng)用服務(wù)器中并會(huì)影響你的測(cè)試結(jié)果。推薦的方式時(shí),將JMeter與你的應(yīng)用服務(wù)配制在同一網(wǎng)斷。這將小化由于網(wǎng)絡(luò)引起影響的性能測(cè)試結(jié)果。
  Step 0: 配制節(jié)點(diǎn)
  確保所有的節(jié)點(diǎn)(客戶端和服務(wù)):
  · 運(yùn)行相同的JMeter版本
  · 在所有系統(tǒng)中使用相同的Java版本。使用不同的Java版本也可正常工作,但不鼓勵(lì)這樣做。
  如果在測(cè)試過(guò)程中使用任何數(shù)據(jù)文件, 注意這些將不會(huì)被通過(guò)客戶端發(fā)送給服務(wù)器,因此請(qǐng)確保這些信息可被所有的服務(wù)所獲取 。如果需要,你可以通過(guò)在每個(gè)服務(wù)中的 user.properties 或 system.properties 來(lái)定義不同的屬性。當(dāng)服務(wù)啟啟動(dòng)時(shí),這些屬性將會(huì)被使用并可以應(yīng)用到測(cè)試計(jì)劃中來(lái)影響測(cè)試操作(如,鏈接不同的遠(yuǎn)程服務(wù));蛘撸跍y(cè)試的數(shù)據(jù)文件中使用不同的數(shù)據(jù)(如,每個(gè)服務(wù)使用的id,把這些數(shù)據(jù)分到不同的數(shù)據(jù)文件中)
  Step 1: 啟動(dòng)服務(wù)
  使用遠(yuǎn)程模式運(yùn)行JMeter,在所有的機(jī)器中啟動(dòng)JMeter服務(wù)組件通過(guò)運(yùn)行 JMETER_HOME/bin/jmeter-server (unix) 或 JMETER_HOME/bin/jmeter-server.bat (windows)腳本。
  注意,在每一個(gè)節(jié)點(diǎn)中僅應(yīng)該有一個(gè)JMeter服務(wù),除非有不同的 RMI 在使用。
  自JMeter2.3.1后,JMeter應(yīng)用服務(wù)自行啟動(dòng) RMI 的服務(wù)注冊(cè);不需要再單獨(dú)啟 RMI 。為了改變上面的方式,可以定義JMeter的屬性
  server.rmi.create=false
  在服務(wù)的系統(tǒng)中。
  通常, RMI 為JMeter服務(wù)引擎使用動(dòng)態(tài)端口。這樣會(huì)引起防火墻問(wèn)題,找到屬性名 server.rmi.localport 來(lái)控制你的端口號(hào)。如果這個(gè)是非0,服務(wù)器將會(huì)使用它來(lái)做為本地的端口號(hào)。
  Step 2: 在客戶端屬性文件中添加服務(wù)端IP地址
  在控制JMeter機(jī)器中修改屬性文件。在 JMETER_HOME/bin/jmeter.properties 中,找出屬性名 remote_hosts ,添加你運(yùn)行JMeter的機(jī)器IP。多個(gè)地址通過(guò)逗號(hào)分隔。
  注意,你可以使用命令行選項(xiàng) -R 來(lái)替代遠(yuǎn)程主機(jī)來(lái)使用。有相同的功能,像使用 -r 和 -Jremote_hosts={serverlist} 。比如:
  jmeter-Rhost1,127.0.0.1,host2
  如果你定義JMeter的屬性 server.exitaftertest=true ,服務(wù)器在運(yùn)行獨(dú)立測(cè)試后將會(huì)退出。查看 -X 標(biāo)記的使用(下文有說(shuō)明)。
  Step 3a: 使用JMeter GUI客戶端檢查配制
  現(xiàn)在你已經(jīng)準(zhǔn)備控制JMeter客戶端。在Windows電腦中,開(kāi)啟客戶端通過(guò) bin/jmeter.bat 。在UNIX電腦中,使用腳本 bin/jmeter 。你將注意到 Run 菜單包括兩個(gè)字菜單: Remote Start 和 Remote Stop (查看下圖)。這些菜單包括你發(fā)送屬性配制文件。使用 Remote Start 和 Remote Stop 代替正常JMeter的 Start 和 Stop 。

  Step 3b: 通過(guò)非GUI啟動(dòng)JMeter
  GUI模式應(yīng)該僅用來(lái)在調(diào)試模式,作為一種更好的改變,你應(yīng)該通過(guò)非GUI(命令行)模式啟動(dòng)遠(yuǎn)程測(cè)試。命令行如下:
  jmeter -n-tscript.jmx -r
  或
  jmeter -n-tscript.jmx -R server1,server2,...
  其它有用的參數(shù):
  -Gproperty=value
  在所有服務(wù)器中定義一個(gè)屬性(可以出現(xiàn)多次)
  -X
  測(cè)試結(jié)束后,退出遠(yuǎn)程模式
  第一個(gè)例子將會(huì)啟動(dòng)遠(yuǎn)程測(cè)試無(wú)論在JMeter屬性 remote_hosts 是否定義;第二個(gè)例子從服務(wù)列表定義 remote_hosts 并在遠(yuǎn)程服務(wù)中啟動(dòng)測(cè)試。當(dāng)所有的遠(yuǎn)程服務(wù)停止后,命令行客戶端將會(huì)退出。
  手工操作
  在一些場(chǎng)景下,JMeter服務(wù)腳本將無(wú)法工作(你所使用的操作系統(tǒng)平臺(tái)不支持JMeter運(yùn)行開(kāi)發(fā))。下面是怎樣開(kāi)始JMeter服務(wù)通過(guò)一種手機(jī)的方法:
  Step 1a: 啟動(dòng)RMI注冊(cè)
  自JMeter2.3.1版本后,RMI注冊(cè)通過(guò)JMeter服務(wù)啟動(dòng),因此在平常場(chǎng)景下這部分不會(huì)生效。為了解決上面的方法,定義JMeter屬性 server.rmi.create=false 在服務(wù)存放系統(tǒng)中并按下面的操作繼續(xù)。
  JMeter使用 Remote Method Invocation(RMI) 當(dāng)作遠(yuǎn)程通訊工具。因此,你需要運(yùn)行 JDK 自帶的RMI注冊(cè)應(yīng)用程序(被命名為, rmiregistry ),位置在 bin 目錄中。在運(yùn)行 rmiregistry 之前,確保下面的 jar 包在你的 系統(tǒng)環(huán)境變量 中:
  · JMETER_HOME/lib/ext/ApacheJMeter_core.jar
  · JMETER_HOME/lib/jorphan.jar
  · JMETER_HOME/lib/logkit-2.0.jar
  rmiregistry 應(yīng)用程序需要讀取一些JMeter類。運(yùn)行 rmiregistry 不需要參數(shù)。默認(rèn)監(jiān)聽(tīng)的端口號(hào)是 1099 .
  Step 1b: 啟動(dòng)JMeter服務(wù)
  一旦 RMI 注冊(cè)應(yīng)用程序已經(jīng)運(yùn)行,啟動(dòng)JMeter服務(wù)。使用 -s 參數(shù)作為JMeter的啟動(dòng)參數(shù)。
  第2/3步還是保持一致。
  提示
  JMeter/RMI需要從客戶端至服務(wù)器的連接。將會(huì)使用你選擇的端口號(hào),默認(rèn)是 1099 .
  JMeter/RMI也需要一個(gè)回傳的鏈接,用于返回樣例結(jié)果從服務(wù)器端到客戶端。這個(gè)會(huì)使用一個(gè)較大數(shù)字的端口號(hào)。
  通過(guò)JMeter的 jmeter.properties 的屬性 client.rmi.localport 來(lái)控制端口號(hào)。如果沒(méi)有防火墻和其它網(wǎng)絡(luò)過(guò)濾在JMeter的客戶端和服務(wù)器端,你需要確保他們創(chuàng)建的鏈接是可通的。如果有必要,使用監(jiān)聽(tīng)軟件查看通信被生成。
  如果你使用 Suse Linux 系統(tǒng),這些信息將會(huì)有幫助。默認(rèn)的安裝將會(huì)啟動(dòng)防火墻。如果這樣的話,遠(yuǎn)程測(cè)試將無(wú)法工作。下面的方法是 Sergey Ten 提供的。
  如果你看到鏈接被拒絕,通過(guò)下面的選項(xiàng)打開(kāi)調(diào)試:
  rmiregistry -J-Dsun.rmi.log.debug=true
  -J-Dsun.rmi.server.exceptionTrace=true
  -J-Dsun.rmi.loader.logLevel=verbose
  -J-Dsun.rmi.dgc.logLevel=verbose
  -J-Dsun.rmi.transport.logLevel=verbose
  -J-Dsun.rmi.transport.tcp.logLevel=verbose
  在JMeter2.3.1版本之后,RMI注冊(cè)被服務(wù)啟動(dòng);但選項(xiàng)仍可在命令行中工作。如: jmeter -s -Dsun.rmi.loader.logLevel=verbose (如,刪除 -J 前綴)。改變屬性可以在 system.properties 屬性文件中定義。
  解決問(wèn)題的方案是刪除回調(diào) 127.0.0.1 和 127.0.0.2 從 /etc/hosts 。發(fā)生了什么引起, jmeter-server 不能鏈接 rmiregistry 如果 127.0.0.2 回調(diào)不可用。使用下面的設(shè)置修復(fù):
  替換
  dirname $0`/jmeter-s"$@"
  用
  HOST="-Djava.rmi.server.hostname=[computer_name][computer_domain]
  -Djava.security.policy=`dirname $0`/[policy_file]"
  `dirname $0`/jmeter $HOST -s "$@"
  同時(shí)創(chuàng)建協(xié)議文件,并添加 電腦名 電腦域 行在 /etc/hosts 。
  為了更好的支持RMI通訊通道的 SSH 協(xié)議在遠(yuǎn)程測(cè)試中,自JMeter2.6版本后:
  · 一個(gè)新的屬性 client.rmi.localport 可以設(shè)置來(lái)控制RMI端口通過(guò)使用 RemoteSampleListenerImpl
  · 為了支持RMI使用SSH通信協(xié)議作為一個(gè)遠(yuǎn)程終端,在本機(jī)使用一個(gè)端口,可在Java的系統(tǒng)屬性 java.rmi.server.hostname 參數(shù)中說(shuō)明出來(lái)的回調(diào)接口現(xiàn)在允許調(diào)用。

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd