日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jmeter远程测试

發(fā)布時間:2023/12/20 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jmeter远程测试 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

11.3 詳解JMeter遠程測試(1)

2012-04-09 09:14 溫素劍 電子工業(yè)出版社 字號:T | T

綜合評級:

想讀(7)??在讀(2)??已讀(0)?? 品書齋鑒(0)?? 已有9人發(fā)表書評

《零成本實現(xiàn)Web性能測試:基于Apache JMeter》第11章JMeter進階知識,本章內(nèi)容比較寬泛,總結(jié)起來都是一些JMeter高階知識。其中"詳解JMeter函數(shù)和變量"一節(jié),請重 點關(guān)注各種JMeter內(nèi)置函數(shù);"詳解JMeter正則表達式"一節(jié),對入門讀者很重要;"詳解JMeter遠程測試"一節(jié)在實際工作中會經(jīng)常用到,非 常重要;"詳解JMeter最佳實踐經(jīng)驗"和"一些小技巧"都是一些實踐經(jīng)驗,供讀者借鑒。本節(jié)為大家介紹JMeter遠程測試。

AD:51CTO網(wǎng)+ 首屆中國APP創(chuàng)新評選大賽火熱招募中……

11.3? 詳解JMeter遠程測試(1)

如果運行JMeter客戶端的機器性能不能滿足測試需要,那么測試人員可以通過單個JMeter GUI客戶端來控制多個遠程JMeter服務(wù)器,以便對服務(wù)器進行壓力測試,模擬足夠多的并發(fā)用戶。通過遠程運行JMeter,測試人員可以跨越多臺低端 計算機復制測試,這樣就可以模擬一個比較大的服務(wù)器壓力。一個JMeter GUI客戶端實例,理論上可以控制任意多的遠程JMeter實例,并通過它們收集測試數(shù)據(jù),如圖11-3所示。這樣一來,就有了如下特性:

保存測試采樣數(shù)據(jù)到本地機器。

通過單臺機器管理多個JMeter執(zhí)行引擎。

沒有必要將測試計劃復制到每一臺機器,JMeter GUI客戶端會將它發(fā)往每一臺JMeter服務(wù)器。

每一臺JMeter遠程服務(wù)器都執(zhí)行相同的測試計劃。JMeter不會在執(zhí)行機間做負載均衡,每一臺服務(wù)器都會完整地運行測試計劃。

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

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

請注意,假如測試人員將JMeter執(zhí)行引擎安裝在應(yīng)用服務(wù)器(測試目標)上,那么這顯然會加重應(yīng)用服務(wù)器的負擔,測試結(jié)果也將變得不可信。作者推 薦的方式是將JMeter遠程服務(wù)器放在應(yīng)用服務(wù)器(測試目標)所在的同一個網(wǎng)段內(nèi)。這樣做既可以減少JMeter收集測試結(jié)果對網(wǎng)絡(luò)產(chǎn)生的沖擊,又可以 避免對應(yīng)用服務(wù)器(測試目標)性能產(chǎn)生影響。

?
圖11-3 JMeter遠程測試原理圖

下面是啟動JMeter遠程測試的基本步驟:

步驟1:配置節(jié)點

確保所有節(jié)點(JMeter客戶端和JMeter遠程服務(wù)器)運行相同版本的JMeter。盡可能在所有操作系統(tǒng)上使用相同的Java版本。

如果測試用到了外部數(shù)據(jù)文件,那么請注意這些文件不會被JMeter客戶端分發(fā),因此測試人員需要確保每臺執(zhí)行機上都保存了這些數(shù)據(jù)文件(其所在目 錄也必須正確)。如果有必要,用戶可以為每臺執(zhí)行機設(shè)置不同的屬性變量,即在JMeter遠程服務(wù)器上編輯user.properties或者 system.properties文件。這些屬性將會在JMeter遠程服務(wù)器啟動時被識別,并有可能被應(yīng)用到測試計劃之中,從而影響測試執(zhí)行(例如, 與其他遠程服務(wù)器發(fā)生交互)。另外,不同的JMeter遠程服務(wù)器可能會使用不同內(nèi)容的數(shù)據(jù)文件(例如,每臺服務(wù)器必須使用不同的ID,就以此來劃分數(shù)據(jù) 文件)。

步驟2:啟動遠程服務(wù)器

要啟動JMeter遠程節(jié)點,請在執(zhí)行機上運行JMETER_HOME/bin/jmeter-server (UNIX)或者JMETER_HOME/bin/jmeter-server.bat(Windows)腳本。

請注意,每個遠程節(jié)點上只能運行一個JMeter遠程服務(wù)器腳本,除非采用不同的RMI端口。從JMeter 2.3.1開始,JMeter遠程服務(wù)器會自己啟動RMI注冊;用戶沒有必要單獨啟動RMI注冊。假設(shè)測試人員一定要單獨啟動RMI注冊,可以在遠程節(jié)點 上定義JMeter屬性server.rmi.create=false。

默認情況下,JMeter遠程服務(wù)器的RMI使用動態(tài)端口號。這樣就會為防火墻配置帶來麻煩,因此JMeter 2.3.2及其以后的版本,會檢查JMeter屬性server.rmi.localport。如果該值非零,JMeter遠程服務(wù)器就會用它來作為本地 端口號。

步驟3:將JMeter遠程服務(wù)器的IP地址添加到客戶端屬性文件中

編輯JMeter控制機的屬性文件。在/bin/jmeter.properties文件中找到屬性"remote_hosts",使用JMeter遠程服務(wù)器的IP地址作為其屬性值。可以添加多個服務(wù)器的IP地址,以逗號作為分隔。

請注意測試人員還可以使用-R命令行選項來指明將會使用的遠程服務(wù)器。這與使用-r 和-Jremote_hosts={服務(wù)器列表}的效果相同。例如jmeter -Rhost1,127.0.0.1,host2。

如果測試人員定義JMeter屬性server.exitaftertest=true,那么遠程服務(wù)器在運行完單個測試后就會退出。-Z標志也有同樣的效果,參見后面的內(nèi)容。

?

11.3? 詳解JMeter遠程測試(2)

步驟4(a):通過GUI客戶端啟動JMeter測試

現(xiàn)在輪到啟動JMeter GUI客戶端了。在MS-Windows環(huán)境下運行"bin/jmeter.bat"腳本,在UNIX環(huán)境下運行"bin/jmeter"腳本。測試人員 會發(fā)現(xiàn)在運行(Run)菜單下,包含兩個子菜單"Remote Start"和"Remote Stop",如圖11-4所示。這兩個子菜單中包含測試人員在屬性文件中設(shè)置的JMeter遠程服務(wù)器IP地址。此刻,請使用遠程啟動和停止來代替普通的 JMeter啟動和停止。

?
圖11-4? 運行菜單

步驟4(b):通過非GUI客戶端啟動JMeter測試

還有另外一種方法,測試人員可以通過非GUI客戶端來啟動遠程服務(wù)器。命令如下:

  • jmeter?-n?-t?script.jmx?-r?
  • 或者:

  • jmeter?-n?-t?script.jmx?-R?server1,server2...?
  • 其他標志可能也有用。

    -Gproperty=value:在所有JMeter遠程服務(wù)器中定義一個屬性(可以多次出現(xiàn))

    -Z:在測試結(jié)束后退出遠程服務(wù)器。

    第一個例子會啟動定義在JMeter屬性remote_hosts中的遠程服務(wù)器;而第二個例子會先定義遠程服務(wù)器列表,接著啟動它們。命令行客戶端會在所有服務(wù)器停止后退出。

    1.手動配置JMeter遠程測試

    在某些情況下,jmeter-server腳本不能正常工作(如果測試人員使用的操作系統(tǒng)不在JMeter開發(fā)者預(yù)期的范圍內(nèi))。下面介紹如何啟動JMeter遠程服務(wù)器(對應(yīng)上面的步驟2),其中包含了更多人工操作。

    步驟2(a):啟動RMI注冊

    從JMeter 2.3.1開始,JMeter遠程服務(wù)器會自己啟動RMI注冊,因此這里的內(nèi)容不適用于普通情況。如果要采用歷史版本的操作方法,首先在JMeter遠程服務(wù)器上定義JMeter屬性server.rmi.create=false,并遵循如下指南。

    JMeter使用Remote Method Invocation(RMI)作為遠程通信機制。因此,測試人員需要用到JDK "bin"目錄中的RMI注冊程序(名為"rRmiregistry")。在運行Rmiregistry之前,請確保如下jar存在于測試人員的系統(tǒng) claspath中:

    JMETER_HOME/lib/ext/ApacheJMeter_core.jar。

    JMETER_HOME/lib/jorphan.jar。

    JMETER_HOME/lib/logkit-1.2.jar。

    注冊程序需要訪問特定JMeter類。運行Rmiregistry無須參數(shù)。默認情況下應(yīng)用程序會監(jiān)聽端口1099。

    步驟2(b):啟動JMeter遠程服務(wù)器

    一旦RMI注冊程序運行起來,就啟動JMeter遠程服務(wù)器。JMeter啟動腳本需攜帶"-s"選項。

    步驟3和步驟4同上面的介紹。

    2.一些小技巧

    JMeter/RMI要求建立一個從客戶端到遠程服務(wù)器的連接。這就會用到測試人員所選擇的端口號,默認值是1099。JMeter/RMI還要求 建立一個反向連接,目的是從遠程服務(wù)器向客戶端返回測試采樣結(jié)果。這就會用到一個更高數(shù)字的端口號。如果在JMeter客戶端與JMeter遠程服務(wù)器之 間存在任何防火墻或者網(wǎng)絡(luò)過濾器,那么測試人員就需要確保它們已經(jīng)被正確配置,并允許相關(guān)連接通信。如果有必要,請使用監(jiān)聽軟件來觀察通信的過程。

    如果JMeter運行在Suse Linux上,下面這些技巧對測試人員可能會有幫助。默認的安裝可能會啟動防火墻。在這種情況下,遠程測試將無法正常工作。如果測試人員發(fā)現(xiàn)連接被拒絕 后,可以通過下面的選項打開debugging。從JMeter 2.3.1版本開始,RMI注冊由JMeter遠程服務(wù)器啟動;不過相關(guān)選項依然可以通過JMeter命令行傳遞。例如,"jmeter -s -Dsun.rmi.loader.logLevel=verbose"(省略了-J前綴)。另外這些屬性還可以被定義在 system.properties文件中。

    解決的方法是從etc/hosts中刪除對127.0.0.1和127.0.0.2的回送(Loopback)。 當127.0.0.2的回送無效時,jmeter-server將無法連接到Rmiregistry。

    替換:

  • `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?"$@"
  • 11.3? 詳解JMeter遠程測試(3)

    同時創(chuàng)建一個規(guī)則(Qolicy)文件,添加[computer_name][computer_domain]行到/etc/hosts。

    3.如何使用不同端口號

    默認情況下,JMeter使用標準RMI端口號1099(這是可以改變的)。要想成功改變使用的端口號,需滿足如下條件:

    在遠程服務(wù)器,啟動Rmiregistry使用新端口號。

    在遠程服務(wù)器,啟動JMeter并預(yù)先定義server_port屬性。

    在客戶端,更新remote_hosts屬性,在其中包含remote host:port設(shè)置。

    從JMeter 2.1.1版本開始,jmeter-server腳本支持改變端口號。例如,假設(shè)測試人員希望使用端口號1664(可能因為1099端口已經(jīng)被其他應(yīng)用程序占用了)。

    Windows系統(tǒng) (DOS窗口中):

  • C:\JMETER>?SET?SERVER_PORT=1664?
  • C:\JMETER>?JMETER-SERVER?[other?options]?
  • UNIX系統(tǒng):

  • $?SERVER_PORT=1664?jmeter-server?[other?options] ?
  • [N.B.?use?upper?case?for?the?environment?variable]?
  • 在這兩種情況下,腳本都會在指定端口上啟動Rmiregistry,接著以遠程服務(wù)器模式啟動JMeter,并已經(jīng)定義了"server_port"屬性。

    選定的端口號將會被記錄到遠程服務(wù)器的jmeter.log文件中(Rmiregistry不會創(chuàng)建一個日志文件)。

    4.使用采樣批次

    測試計劃中的監(jiān)聽器會把它們的結(jié)果返回到JMeter客戶端,而JMeter客戶端默認情況下會將這些結(jié)果寫入到指定文件中,采樣結(jié)果會在產(chǎn)生后立即發(fā)回JMeter客戶端。這樣就會對網(wǎng)絡(luò)和JMeter客戶端產(chǎn)生很大的壓力。用戶可以通過設(shè)置一些屬性,來改變默認操作。

    模式(Mode)(采樣結(jié)果發(fā)送模式)默認是Standard。

    Standard:在采樣結(jié)果產(chǎn)生后立即發(fā)送。

    Hold:將采樣結(jié)果保存在一個數(shù)組中,直到測試結(jié)束。這可能會占用遠程服務(wù)器的大量內(nèi)存。

    Batch:當計數(shù)器或者時間超過閾值之后,發(fā)送保存的采樣結(jié)果。

    Statistical:當計數(shù)器或者時間超過閾值之后,以概要的形式發(fā)送采樣結(jié)果;采樣結(jié)果以線程組(Thread Group)名稱和采樣標簽(Sample Label)進行概要統(tǒng)計。積累的數(shù)據(jù)域包括:elapsed time、latency、bytes、sample count、error count,其他數(shù)據(jù)域?qū)粊G棄。

    Stripped:將成功采樣的響應(yīng)數(shù)據(jù)移除。

    StrippedBatch:將成功采樣的響應(yīng)數(shù)據(jù)移除,并批次發(fā)送。

    Custom implementation:將模式參數(shù)設(shè)置為測試人員的客戶化采樣發(fā)送器的類名。該類必須實現(xiàn)接口SampleSender,并且類的構(gòu)造函數(shù)只有一個RemoteSampleListener型的參數(shù)。

    如下屬性會影響B(tài)atch和Statistical模式。

    num_sample_threshold:一個批次中的采樣數(shù)目(默認為100)。

    time_threshold:等待的毫秒數(shù)(默認為60秒)。

    ?

    3、遠程啟動時,報錯:

    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.<init>(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)

    這個問題終于被我解決了,其實原因好簡單呀。只要將本機的server.bat執(zhí)行即可。

    注意:要是在配置的地方寫了127.0.0.1 的話 就要開本機的 sever.bat. 不寫的話 就不用開了

    ?

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

    netstat -ano | findstr "1099"
    tasklist | findstr "1099"

    ?

    Jmeter-server啟動失敗:Cannot?start.?Unable?to?get?local?host?IP?address.?is?a?loopback?address

    (2012-03-30 13:51:42) 轉(zhuǎn)載▼
    標簽:

    it

    分類: 性能測試:jmeter

    ? 在Windows下啟動Jmeter非常順利,轉(zhuǎn)到Linux下居然啟動失敗。
    想起之前 遇到“/etc/hosts文件設(shè)置不對導致Jboss啟動失敗”, 立馬把焦點指向/etc/hosts。

    果然還是這個問題,貼/etc/hosts示例:

    127.0.0.1?????? localhost.localdomain localhost

    10.20.10.31?? higkoo.rdev.company.net higkoo


    執(zhí)行命令`hostname`查看當前機器名如果當前機器名與/etc/hosts不一致 ,可手動先執(zhí)行成一次`hostname yourhostname`或直接加到j(luò)meter-server文件中(注意機器名中不要含域信息,譬如:myname.rdev.company.com。這樣設(shè)置仍然啟動失敗)。

    由/etc/hosts文件導致啟動失敗的錯誤有:

    1

    Created?remote?object:?UnicastServerRef?[liveRef:?[endpoint:[10.20.10.31:62090](local),objID:[2c639f6d:12794fca52a:-7fff,?712947915258586677]]]

    Server?failed?to?start:?java.rmi.RemoteException:?Cannot?start.?higkoo?is?a?loopback?address.

    2

    Created?remote?object:?UnicastServerRef?[liveRef:?[endpoint:[10.20.10.31:38796](local),objID:[-b0d822e:12794fee8b1:-7fff,?8314597152635832475]]]

    Server?failed?to?start:?java.rmi.RemoteException:?Cannot?start.?Unable?to?get?local?host?IP?address.

    轉(zhuǎn)載于:https://www.cnblogs.com/zhengah/p/5239054.html

    總結(jié)

    以上是生活随笔為你收集整理的Jmeter远程测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。