Jmeter分布式測試

在使用Jmeter做并發(fā)測試的時候凶朗,可能由于控制機的性能不足铝噩,難以完成任務。比如后臺服務器可以承擔的最大并發(fā)數(shù)50000泪喊,結(jié)果棕硫,運行Jmeter的Master設備在發(fā)送50000并發(fā)的時候自己先宕機了。為了解決這個現(xiàn)象袒啼,我們就必須尋找壓測奴隸幫我們解決任務哈扮,Jmeter控制機控制其他多臺電腦一起發(fā)送50000請求到后臺服務器,這樣就完美解決了問題蚓再。
我們先來看一下整體的思路滑肉。


image.png

<本次配置>

Master機:Windows物理機

Slave機:Linux虛擬機;Windows物理機

Server:Linux虛擬機(被測服務器)

一摘仅、預先準備工作

1. Linux服務器環(huán)境(LAMP)搭建

CentOS7安裝PhpStudy靶庙,搭建Linux服務器環(huán)境(LAMP+LNMP)

CentOS7安裝PhpStudy+ECShop要點 & 異常處理

2. Linux服務器資源監(jiān)控

1)Linux服務器資源監(jiān)控

使用Nmon ==>Linux性能監(jiān)控工具Nmon的安裝使用、生成數(shù)據(jù)報告

(可聯(lián)合JMeter插件工具实檀、以及Linux自帶的top命令實時監(jiān)控)

2)MySQL數(shù)據(jù)庫服務器監(jiān)控

使用Spotlight ==>數(shù)據(jù)庫性能監(jiān)控工具Spotlight on MySQL的安裝

二惶洲、 Linux服務器(Slave機)配置JMeter運行&監(jiān)聽環(huán)境

1. 安裝JAVA環(huán)境

Master機和Slave機都需要安裝相同版本的JAVA環(huán)境(如:JDK 8),并配置環(huán)境變量膳犹。如:Linux系統(tǒng)中安裝JDK ==>CentOS7系統(tǒng)中安裝JDK8-過程記錄

JAVA目錄位置:/usr/local/java(預先在/usr/local目錄下創(chuàng)建java目錄:mkdir java)

image

2. 上傳JMeter至服務器

1)預先將apache-jmeter-4.0.zip壓縮包上傳至Linux服務器恬吕,如/usr/local/jmeter目錄下(預先在/usr/local目錄下創(chuàng)建jmeter目錄:mkdir jmeter)

2)解壓:unzip apache-jmeter-4.0.zip

image

3. 配置JMeter環(huán)境變量

以命令vi /etc/profile打開環(huán)境變量配置文件,在配置文件內(nèi)接近末尾位置添加以下內(nèi)容须床,如下:

---Set JMETER Environment---JMETER_HOME=/usr/local/jmeter/apache-jmeter-4.0PATH=PATH:JMETER_HOME/binexportJMETER_HOME PATH# ---Set JMETER Environment---

保存以上配置內(nèi)容铐料,然后使環(huán)境變量生效:source /etc/profile

查看JMeter配置版本:jmeter -v

image

4. 啟動jmeter-server

路徑切換:cd /usr/local/jmeter/apache-jmeter-4.0/bin

操作命令:jmeter-server或./jmeter-server

image

啟動jmeter-server服務,若出現(xiàn)以下異常:

image

解決方案 ==>[JMeter]...java.rmi.RemoteException: Cannot start. localhost.localdomain is a loopback address_解決方案

具體操作:編輯jmeter-server文件豺旬,將服務器的主機IP設置為固定值(與Linux服務器ifconfig查詢出的實際IP保持一致)

One way to fix this is to define RMI_HOST_DEF belowRMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.248.138

然后再次啟動jmeter-server钠惩,即可正常啟動

image

若出現(xiàn)以下異常:

"Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:

java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)

An error occurred: Listen failed on port: 0; nested exception is:

java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)"

則修改jmeter.properties文件為如下:

Set this if you don't want to use SSL for RMIserver.rmi.ssl.disable=true

5. 上傳ServerAgent至服務器,啟動監(jiān)控服務器資源

1)將ServerAgent-2.2.1.zip壓縮包上傳至Linux服務器族阅,如/usr/local/server-agent目錄下(預先在/usr/local目錄下創(chuàng)建server-agent目錄:mkdir server-agent)

2)解壓:unzip ServerAgent-2.2.1.zip

image

3)查看文件權限:ls -la

確保startAgent.sh具有可執(zhí)行權限

image

4)啟動ServerAgent:./startAgent.sh

ServerAgent默認監(jiān)聽4444端口篓跛,如下:

image

三、Windows主控機(Master機)配置JMeter運行&監(jiān)聽環(huán)境

1. 預先安裝JAVA和JMeter

在Windows主控機中坦刀,提前安裝好與Linux服務器相同版本的JAVA愧沟、JMeter,并各自配置好系統(tǒng)環(huán)境變量

1)JAVA環(huán)境變量:

JAVA_HOME:C:\Program Files\Java\jdk1.8.0_91(JDK安裝的目錄)

Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

CLASSPATH:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;(最前面有一個點.)

2)JMeter環(huán)境變量:

JMETER_HOME:E:\CI_Env\apache-jmeter-4.0

PATH:%JMETER_HOME%\bin;

2. 配置遠程主機地址

配置文件:jmeter.properties

配置JMeter的bin目錄(E:\CI_Env\apache-jmeter-4.0\bin)下的jmeter.properties文件鲤遥,添加remote_hosts遠程地址和端口(Slave機對應的IP沐寺,默認端口1099),如下:

Remote Hosts - comma delimited#remote_hosts=127.0.0.1#remote_hosts=localhost:1099,localhost:2010remote_hosts=192.168.248.138:1099,127.0.0.1:1099

3. 啟動jmeter服務

雙擊運行jmeter-server.bat盖奈,與Linux服務器(Slave機)保持通信聯(lián)通

路徑:E:\CI_Env\apache-jmeter-4.0\bin

image

4. 啟動JMeter GUI工具

啟動程序:jmeter.bat

路徑:E:\CI_Env\apache-jmeter-4.0\bin

image

四混坞、執(zhí)行JMeter分布式測試

1. 預先準備:錄制測試腳本

==>[JPT_05]性能測試-腳本開發(fā)(登錄&隨機購買業(yè)務)

2. 對測試腳本進行參數(shù)配置,調(diào)試腳本

利用Badboy錄制腳本,導入到JMeter的GUI操作界面中進行腳本調(diào)試

變量設置:

【User Defined Variables】

設置參數(shù):host=192.168.248.138(本次Linux服務器的IP)

參數(shù)引用:

ServerName or IP:${hosts}

Host / IP:${hosts}

image
image
image

PS:-----【Important究孕!】-----

【1】腳本中定義變量host啥酱,目的是為了便于腳本的復用和移植。當服務器IP變更時厨诸,只需要在【User Defined Variables】配置元件中將host取值修改懈涛,其他關聯(lián)引用host的位置也會自動獲取該值,而不需要每個位置都手動去修改泳猬,存在耗費時間且可能修改遺漏的風險。

【2】連接Linux服務器時宇植,為了確保正常執(zhí)行測試得封,每個請求中涉及url地址的Path路徑需要大小寫嚴格書寫(與Linux服務器中配置的url保持一致)。

【3】對于JMeter4.0指郁,若要使得其性能監(jiān)控插件可正常監(jiān)控展示出圖像曲線忙上,在執(zhí)行測試之前,需要在【W(wǎng)rite results to file / Read from file】的Filename選擇框中添加某個自定義的jtl文件的絕對路徑闲坎,如:E:\CI_Env\JM_LogResult\123.jtl(存放jtl文件的目錄已提前創(chuàng)建好疫粥,初始時jtl文件可不存在,執(zhí)行測試完成之后即會生成與自定義相同名稱的jtl文件)腰懂。

【4】JMeter腳本中若包含有【CSV Data Set Config 】配置元件配置了csv參數(shù)化的文件梗逮,需要將該參數(shù)化的文件分別上傳到每一臺Slave機的JMeter的bin目錄下存放(與jmeter-server服務文件在同一目錄),同時Master機也需要存放該參數(shù)化文件到JMeter的bin目錄下绣溜;然后在JMeter的GUI界面中【CSV Data Set Config 】配置Filename為相對路徑(如:username.txt)慷彤,不宜采用絕對路徑,否則執(zhí)行測試可能異常(可查看Linux服務器中的jmeter-server.log日志文件)怖喻,測試過程中Linux服務器中的測試數(shù)據(jù)可能不會返回到Windows主控機的JMeter界面中展示底哗。

具體可參看 ==>JMeterThread:Test failed! java.lang.IllegalArgumentException: File...must exist and be readable_解決方案

3. 執(zhí)行JMeter分布式測試

1)執(zhí)行方式選擇

【1】Run --> Remote Start --> 192.168.248.138:1099

【2】Run --> Remote Start --> 127.0.0.1:1099

【3】Run --> Remote Start All

【4】Run --> Start

<1> 調(diào)用Slave機(遠程Linux服務器)上JMeter的Non-GUI模式執(zhí)行測試

<2> 調(diào)用Slave機(此處Master機本身也作為Slave機之一)執(zhí)行測試

<3> 調(diào)用所有配置過的Slave機器執(zhí)行測試

<4> 常規(guī)的執(zhí)行測試方式,以當前Master機對Linux服務器執(zhí)行測試

image

2)設置:線程數(shù)锚沸、循環(huán)數(shù)跋选、定時場景,啟動測試

本次選定執(zhí)行方式:Run --> Remote Start All

配置線程哗蜈、循環(huán)次數(shù)(Step1配置)前标、定時等的設置,開啟執(zhí)行測試恬叹,效果如下:

image
image

PerfMon Metrics Collector:監(jiān)控服務器資源

image

Hits per Second

image
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末候生,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绽昼,更是在濱河造成了極大的恐慌唯鸭,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件硅确,死亡現(xiàn)場離奇詭異目溉,居然都是意外死亡明肮,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門缭付,熙熙樓的掌柜王于貴愁眉苦臉地迎上來柿估,“玉大人,你說我怎么就攤上這事陷猫★啵” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵绣檬,是天一觀的道長足陨。 經(jīng)常有香客問我,道長娇未,這世上最難降的妖魔是什么墨缘? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮零抬,結(jié)果婚禮上镊讼,老公的妹妹穿的比我還像新娘。我一直安慰自己平夜,他們只是感情好蝶棋,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忽妒,像睡著了一般嚼松。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上锰扶,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天献酗,我揣著相機與錄音,去河邊找鬼坷牛。 笑死罕偎,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的京闰。 我是一名探鬼主播颜及,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蹂楣!你這毒婦竟也來了俏站?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤痊土,失蹤者是張志新(化名)和其女友劉穎肄扎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡犯祠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年旭等,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衡载。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搔耕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痰娱,到底是詐尸還是另有隱情弃榨,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布梨睁,位于F島的核電站惭墓,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏而姐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一划咐、第九天 我趴在偏房一處隱蔽的房頂上張望拴念。 院中可真熱鬧,春花似錦褐缠、人聲如沸政鼠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽公般。三九已至,卻和暖如春胡桨,著一層夾襖步出監(jiān)牢的瞬間官帘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工昧谊, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留刽虹,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓呢诬,卻偏偏與公主長得像涌哲,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子尚镰,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353