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

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

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

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