jmeter架構(gòu)及遠(yuǎn)程執(zhí)行壓測(cè)

主從架構(gòu)

JMeter通過線程組來驅(qū)動(dòng)多個(gè)線程運(yùn)行測(cè)試腳本對(duì)被測(cè)服務(wù)器發(fā)起負(fù)載,每一個(gè)負(fù)載機(jī)上都可運(yùn)行多個(gè)線程組。

image.png

分布式壓測(cè)流程:
1.遠(yuǎn)程負(fù)載機(jī)啟動(dòng)Agent程序(JMeter bin目錄下的jmeter-server.bat/sh)敞峭,待控制機(jī)連接;
2.控制機(jī)連接上遠(yuǎn)程負(fù)載機(jī);
3.控制機(jī)發(fā)送指令(腳本及啟動(dòng)命令)啟動(dòng)線程(若測(cè)試腳本有參數(shù)文件及依賴包jar需手動(dòng)拷貝瞬浓,jmeter控制機(jī)并不會(huì)自動(dòng)復(fù)制文件);
4.負(fù)載機(jī)運(yùn)行腳本蓬坡,回傳狀態(tài)(包括測(cè)試結(jié)果)猿棉;
5.控制機(jī)收集結(jié)果并顯示磅叛。

多說兩句(可跳過)

Jmeter是用java編寫的工具,分布式壓測(cè)使用到了java的RMI萨赁,也就是java Remote Method Invocation(java 遠(yuǎn)程方法調(diào)用)弊琴,能夠讓某個(gè)java虛擬機(jī)上的對(duì)象調(diào)用另外一個(gè)Java虛擬機(jī)中的對(duì)象上的方法。兩個(gè)虛擬機(jī)可以運(yùn)行在相同計(jì)算機(jī)上的不同進(jìn)程上杖爽,也可以是網(wǎng)絡(luò)上的不同計(jì)算機(jī)上敲董。

RMI從架構(gòu)上分成三層,分別為RMI服務(wù)端慰安,RMI客戶端和RMI注冊(cè)中心腋寨。

參考下面兩張圖,簡(jiǎn)單來說化焕,就是服務(wù)端會(huì)將自己的服務(wù)綁定到注冊(cè)中心萄窜,客戶端就可以從注冊(cè)中心獲取服務(wù),然后調(diào)用服務(wù)端的服務(wù)锣杂。


image.png

image.png

講上面這些主要是幫助理解一下后面jmeter分布式壓測(cè)的時(shí)候碰到的網(wǎng)絡(luò)問題的原因以及解決方法脂倦。master和slave在壓測(cè)的時(shí)候既充當(dāng)了server也充當(dāng)了client。當(dāng)下發(fā)任務(wù)的時(shí)候元莫,slave就是server赖阻,master會(huì)作為client調(diào)用server來啟動(dòng)壓測(cè);壓測(cè)過程中踱蠢,slave要上傳壓測(cè)數(shù)據(jù)給master火欧,此時(shí)slave就是client,master就是server茎截,因此我們啟動(dòng)jmeter的時(shí)候苇侵,都要配置上-Djava.rmi.server.hostname=<機(jī)器IP地址>指定RMI服務(wù)器的主機(jī)名或IP地址,來幫助slave和master找到對(duì)方企锌。

遠(yuǎn)程執(zhí)行

所有機(jī)器上安裝的Jmeter必須版本一致榆浓。建議先在master機(jī)器將配置配好,然后用ansible拷貝master的版本到各個(gè)slave

slave端配置

  1. 配置JMeter的rmi.properties文件:在每個(gè)slave機(jī)器上撕攒,您需要修改JMeter的rmi.properties文件陡鹃,找到并編輯以下兩個(gè)屬性:
    • server_port:指定slave機(jī)器注冊(cè)的RMI端口。默認(rèn)端口為1099抖坪,您可以根據(jù)需要修改該端口萍鲸。如果此處修改了端口,master的remote_host也要一起改了擦俐。
    • server.rmi.localport:指定slave機(jī)器使用的本地RMI端口脊阴。
    • 區(qū)別: server_port是jmeter作為server監(jiān)聽的端口號(hào),監(jiān)聽客戶端的訪問,提供對(duì)外服務(wù)嘿期;server.rmi.localport是訪問別的Jmeter服務(wù)器時(shí)使用的端口號(hào)品擎。簡(jiǎn)單來說別人訪問我用的是server_port配置的端口,我訪問別人用的是server.rmi.localport配置的端口秽五。
  2. 修改jmeter.properties文件孽查,將server.rmi.ssl.disable 改成 true
  3. 啟動(dòng)JMeter服務(wù)器:
    nohup jmeter-server -Djava.rmi.server.hostname=<slave機(jī)器IP地址> &
  4. 防火墻設(shè)置:如果您的slave機(jī)器有防火墻,確保打開所需端口(默認(rèn)為1099)以允許主控機(jī)器連接到slave機(jī)器坦喘。

master端配置

  1. 配置JMeter的jmeter.properties文件:
  • 將 remote_hosts 屬性設(shè)置為您的slave機(jī)器的IP地址和端口盲再,用逗號(hào)分隔。端口可以不填瓣铣,默認(rèn)為1099答朋。示例:remote_hosts=slave1IP:1099,slave2IP:1099
  1. 修改jmeter.properties文件,將server.rmi.ssl.disable 改成 true

  2. 啟動(dòng)JMeter控制臺(tái):在主控機(jī)器上棠笑,打開JMeter控制臺(tái)界面(GUI)或使用命令行(非GUI)模式梦碗。

jmeter  -Djava.rmi.server.hostname=<master機(jī)器IP地址>  -n -t your_test_plan.jmx -r -l result.jtl
-n 表示非GUI模式運(yùn)行。
-t your_test_plan.jmx 指定測(cè)試計(jì)劃的路徑蓖救。
-r 啟動(dòng)分布式模式洪规。
-l 測(cè)試結(jié)果保存文件
  • 也可以通過-R 10.15.243.53,10.15.230.78參數(shù)來指定使用哪些壓測(cè)機(jī)。

-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx 這個(gè)參數(shù)的含義:參數(shù)指定了RMI服務(wù)器要使用的主機(jī)名或IP地址循捺。在分布式環(huán)境中斩例,因?yàn)镽MI默認(rèn)會(huì)將RMI服務(wù)器的主機(jī)名綁定到網(wǎng)卡上的所有IP地址。但是从橘,如果您的主機(jī)有多個(gè)網(wǎng)卡念赶,或者您希望明確指定使用的IP地址,那么您就需要使用-Djava.rmi.server.hostname 參數(shù)來顯式地設(shè)置主機(jī)名或IP地址恰力。
簡(jiǎn)單來說叉谜,就是將jmeter使用的java rmi服務(wù)綁定到本機(jī)某個(gè)IP,client端將從該IP獲取server相關(guān)信息踩萎。

壓測(cè)結(jié)果

  • 總樣本數(shù) = 線程數(shù) * 循環(huán)次數(shù) * 執(zhí)行機(jī)總數(shù) 停局。
  • 關(guān)注壓測(cè)機(jī)的資源使用情況,包括CPU內(nèi)存香府、磁盤IO翻具、網(wǎng)絡(luò)IO是否達(dá)到瓶頸。

常見問題解決

問題一

Server failed to start: java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address.
An error occurred: Cannot start. localhost.localdomain is a loopback address.

解決方法:執(zhí)行命令中指定本地IP ./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx

問題二

An error occurred: Listen failed on port: 0; nested exception is:
java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)

解決方法:編輯jmeter.properties文件回还,將server.rmi.ssl.disable的值改為true

問題三

slave機(jī)器無法啟動(dòng)或者沒有返回執(zhí)行數(shù)據(jù)。

解決方法:

1叹洲、檢查master機(jī)器和slave機(jī)器能否ping通

2柠硕、檢查防火墻

3、檢查master機(jī)器和slave機(jī)器的服務(wù)器時(shí)間是否一致

4、如果是用的云主機(jī)ecs蝗柔,還要看下安全組是否開放了1099端口闻葵,或者是自己配置地master/salve通信的端口。

問題四

master開始?jí)簻y(cè)后癣丧,即使壓測(cè)結(jié)束也不退出槽畔,一直卡住。查看slave機(jī)器地jmeter-server.log胁编,一般在哪個(gè)目錄下執(zhí)行jmeter-server ...命令厢钧,這個(gè)日志文件就在那個(gè)目錄下,可以看到如下報(bào)錯(cuò):

java.rmi.ConnectException: Connection refused to host: 127.0.1.1;

解決方法:

Master啟動(dòng)下發(fā)任務(wù)的時(shí)候嬉橙,也要帶上jmeter -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx -n -t xxx.jmx -r -l result.jtl早直,因?yàn)閴簻y(cè)結(jié)果的生成和收集是通過 Slave 節(jié)點(diǎn)上傳至 Master 節(jié)點(diǎn)完成的,slave需要主動(dòng)和master通信市框。

問題五

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[:39308](local),objID:[24e78a63:16243c70661:-7fff, 7492480871343944173]]]
Server failed to start: java.rmi.RemoteException: Cannot start. Unable to get local host IP address.; nested exception is:
java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known
An error occurred: Cannot start. Unable to get local host IP address.; nested exception is:
java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known

解決方法:
使用hostname命令獲取機(jī)器名稱霞扬,在/etc/hosts文件追加一個(gè)映射

xxx.xxx.xxx.xxx iZwz95j86y235aroi85ht0Z

參考

https://www.cnblogs.com/lirongyang/p/15595257.html
https://www.cnblogs.com/Sweettesting/p/15099318.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市枫振,隨后出現(xiàn)的幾起案子喻圃,更是在濱河造成了極大的恐慌,老刑警劉巖粪滤,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斧拍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡额衙,警方通過查閱死者的電腦和手機(jī)饮焦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來窍侧,“玉大人县踢,你說我怎么就攤上這事∥凹” “怎么了硼啤?”我有些...
    開封第一講書人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)斧账。 經(jīng)常有香客問我谴返,道長(zhǎng),這世上最難降的妖魔是什么咧织? 我笑而不...
    開封第一講書人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任嗓袱,我火速辦了婚禮,結(jié)果婚禮上习绢,老公的妹妹穿的比我還像新娘渠抹。我一直安慰自己蝙昙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開白布梧却。 她就那樣靜靜地躺著奇颠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪放航。 梳的紋絲不亂的頭發(fā)上烈拒,一...
    開封第一講書人閱讀 51,292評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音广鳍,去河邊找鬼荆几。 笑死,一個(gè)胖子當(dāng)著我的面吹牛搜锰,可吹牛的內(nèi)容都是我干的伴郁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蛋叼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼焊傅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起狈涮,我...
    開封第一講書人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤狐胎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后歌馍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體握巢,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年松却,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了暴浦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡晓锻,死狀恐怖歌焦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砚哆,我是刑警寧澤独撇,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站躁锁,受9級(jí)特大地震影響纷铣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜战转,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一搜立、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧槐秧,春花似錦儒拂、人聲如沸寸潦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至命雀,卻和暖如春蒜哀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吏砂。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工撵儿, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狐血。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓淀歇,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親匈织。 傳聞我的和親對(duì)象是個(gè)殘疾皇子浪默,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容