Jmeter分布式壓測(cè)

Jmeter的集群模式可以讓我們將多臺(tái)機(jī)器聯(lián)合起來(lái)一起產(chǎn)生負(fù)載,從而彌補(bǔ)單臺(tái)機(jī)器負(fù)載生成能力不足的問(wèn)題精绎。

假設(shè)我們的測(cè)試計(jì)劃會(huì)產(chǎn)生100個(gè)threads歪泳,我們使用6臺(tái)機(jī)器進(jìn)行分布式測(cè)試的時(shí)候锉屈,一共會(huì)產(chǎn)生100 * 6 = 600的負(fù)載。

日常情況办龄,大部分的性能需求烘绽,單臺(tái)壓測(cè)機(jī)就可以抗住的。4C8G的window server機(jī)器俐填,使用UI方式安接,最高壓測(cè)過(guò)2000并發(fā)(RT 20ms以?xún)?nèi)),單機(jī)沒(méi)什么問(wèn)題(當(dāng)然如果IO很高的話玷禽,注意壓測(cè)機(jī)網(wǎng)卡可能會(huì)先出現(xiàn)瓶頸赫段。)超過(guò)2000并發(fā),可使用分布式矢赁。

一糯笙、注意事項(xiàng)

1、關(guān)閉防火墻撩银,開(kāi)放端口

2给涕、所有機(jī)器最好都在同一個(gè)子網(wǎng)上。

選擇和被測(cè)目標(biāo)服務(wù)同網(wǎng)段的機(jī)器作為壓測(cè)機(jī),很多人都是直接在辦公環(huán)境的自己機(jī)器上壓測(cè)够庙,這種壓測(cè)很不穩(wěn)定恭应,時(shí)好時(shí)壞,如果你們沒(méi)有做流量隔離耘眨,說(shuō)不定你會(huì)把你們的辦公環(huán)境壓垮昼榛!

3、一定要用內(nèi)網(wǎng)IP剔难,不要用公網(wǎng)IP胆屿,用ping去檢查。

4偶宫、確保所有系統(tǒng)上使用相同版本的jdk和jmeter非迹,包括大版本和小版本。

可使用下面的命令纯趋,遠(yuǎn)程拷貝憎兽,確保所有機(jī)器的軟件包相同

遠(yuǎn)程拷貝命令(內(nèi)網(wǎng)地址):

scp -r /usr/local/software/jdk-8u141-linux-x64.tar.gz root@172.18.230.233:/usr/local/software

scp -r /usr/local/software/jmeter/apache-jmeter-4.0.tgz root@172.18.230.233:/usr/local/software/jmeter

5、禁用SSL

vim jmeter.properties

server.rmi.ssl.disable=true

二吵冒、專(zhuān)業(yè)名稱(chēng)

master:司令

slave:奴隸

target:目標(biāo)

Jmeter分布式壓測(cè)原理

1纯命、總控機(jī)器的節(jié)點(diǎn)master,其他產(chǎn)生壓力的機(jī)器叫“肉雞” server

2痹栖、master會(huì)把壓測(cè)腳本發(fā)送到 server上面

3扎附、執(zhí)行的時(shí)候,server上只需要把jmeter-server打開(kāi)就可以了结耀,不用啟動(dòng)jmeter

4、結(jié)束后匙铡,server會(huì)把壓測(cè)數(shù)據(jù)回傳給master,然后master匯總輸出報(bào)告

三图甜、壓測(cè)步驟

1、在master和slaves機(jī)器上分別按照相同版本的jdk和jmeter

2鳖眼、在master機(jī)器上

1)修改配置文件黑毅,進(jìn)入jmeter/bin目錄下

vim jmeter.properties

remote_hosts=192.168.0.102:8899,192.168.0.101:8899(slaves機(jī)器的ip和端口)

server.rmi.ssl.disable=true(禁用ssl)

如果master即作為master也作為slaves

remote_hosts=192.168.0.102:8899,192.168.0.101:8899,master的ip:8899

server_port=8899

server.rmi.ssl.disable=true(禁用ssl)

2)啟動(dòng)jmeter服務(wù)

./jmeter-server(linux)

jmeter-server.bat(windows)

3)檢查是否啟動(dòng)成功

ps -ef|grep jmeter-server

3、在slaves機(jī)器上

1)修改配置文件钦讳,進(jìn)入jmeter/bin目錄下

vim jmeter.properties

remote_hosts=127.0.0.1server_port=8899

server.rmi.ssl.disable=true(禁用ssl)

2)啟動(dòng)jmeter服務(wù)

./jmeter-server(linux)

jmeter-server.bat(windows)

3)檢查是否啟動(dòng)成功

ps -ef|grep jmeter-server

4矿瘦、分布式執(zhí)行

GUI模式 :運(yùn)行——》遠(yuǎn)程啟動(dòng)、遠(yuǎn)程啟動(dòng)全部

non-GUO模式:命令行增加-r參數(shù)

jmeter -n -t /Users/jack/Desktop/remote.jmx -r -l /Users/jack/Desktop/jtl/result.jtl -e -o /Users/jack/Desktop/result

四愿卒、常見(jiàn)問(wèn)題

安裝常見(jiàn)問(wèn)題

1缚去、問(wèn)題:java.net.UnknownHostException: iZwz95j86y235aroi85ht0Z: iZwz95j86y235aroi85ht0Z: Name or service not known

[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server

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ī)器名稱(chēng),追加一個(gè)映射 iZwz95j86y235aroi85ht0Z

vim /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

120.79.160.143 iZwz95j86y235aroi85ht0Z

windows用戶 修改c:\windows\system32\drivers\etc\hosts文件琼开,增加一條域名 與IP的映射

2易结、問(wèn)題:rmi_keystore.jks (No such file or directory)

[root@iZwz95j86y235aroi85ht0Z bin]# ./jmeter-server

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)

解決:

擁有RMI over SSL的有效密鑰庫(kù),或者禁用了SSL。

jmeter.property里面 server.rmi.ssl.disable 改為 true搞动,表示禁用


3躏精、問(wèn)題:Cannot start. userCenter is a loopback address.

[root@userCenter bin]# ./jmeter-server

Created remote object: UnicastServerRef2 [liveRef: [endpoint:[127.0.0.1:39687](local),objID:[-18db419a:167773db861:-7fff, -176377700206527642]]]

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

An error occurred: Cannot start. userCenter is a loopback address.

解決:

執(zhí)行時(shí)加上參數(shù):

./jmeter-server -Djava.rmi.server.hostname=10.1.1.222

-D表示傳入的是system.properties


4、問(wèn)題:There is insufficient memory for the Java Runtime?

[root@iZ949uw2xehZ bin]# ./jmeter

Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)

# There is insufficient memory for the Java Runtime Environment to continue.

# Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.

# An error report file with more information is saved as:

# /usr/local/jmeter/apache-jmeter-4.0/bin/hs_err_pid5855.log

解決:

編輯jmeter

搜索 : "${HEAP:="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m"}"

改變初始堆內(nèi)存和最大堆內(nèi)存鹦肿,最大不超過(guò)PC的50%內(nèi)存矗烛。


5、僅修改 server_port 即可,下面兩者一樣

server.rmi.localport=8899 表示slave server啟動(dòng)顯示的端口

server_port=8899 表示master機(jī)器要遠(yuǎn)程連接的端口箩溃,即 remote_hosts=xxxx:8899


6瞭吃、要在多網(wǎng)卡的服務(wù)器上開(kāi)啟RMI服務(wù)的話必須指定IP,使他們能夠在同一個(gè)網(wǎng)段內(nèi)碾篡。

需要以下幾步(假定所有機(jī)器都在10.120.11.*網(wǎng)段,agent服務(wù)器為linux, controller服務(wù)器為windows):

1) 修改agent服務(wù)器虱而,指定agent機(jī)器的IP

修改jmeter-server文件

# vi jmeter-server

修改RMI_HOST_DEF=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(需要連接的IP)

2)修改server服務(wù)器,指定server機(jī)器的IP

修改jmeter.bat文件

新增set rmi_host=-Djava.rmi.server.hostname=10.120.11.214

修改set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%


7开泽、確定在controller機(jī)器上安裝jdk,版本和jmeter一致牡拇,配置環(huán)境變量:Java_home等

在Agent機(jī)器上安裝jdk,配置環(huán)境變量:Java_home和JMeter_home

安裝目錄不要帶空格穆律,最好都是簡(jiǎn)短的英文路徑


8惠呼、master機(jī)器啟動(dòng)后會(huì)拷貝jmx文件到slave機(jī)器,所以不需要在每臺(tái)slave機(jī)器上也上傳一份jmx峦耘,只需要在master機(jī)器上上傳一份jmx腳本即可剔蹋。

如果使用csv進(jìn)行參數(shù)化,則需要把參數(shù)文件在每臺(tái)slave上拷一份且路徑需要設(shè)置成一樣的辅髓。

總樣本數(shù) = 線程數(shù) * 循環(huán)次數(shù) * 執(zhí)行機(jī)總數(shù)


9泣崩、連接失敗原因排查

以下步驟進(jìn)行排查:

1. jmeter-server是否啟動(dòng);

2. 是否聯(lián)網(wǎng)

3. ping 服務(wù)器IP是否暢通.

4. telnet 端口 192.168.3.10 1099

5. 檢查服務(wù)器的防火墻是否關(guān)閉洛口。

6. 阿里云安全策略是否正常


10矫付、"could not find ApacheJmeter_core.jar"

解決:在Agent機(jī)器安裝jdk,并設(shè)置環(huán)境變量


11第焰、”Bad call to remote host"

解決:檢查被控制機(jī)器上的jmeter-server有沒(méi)有啟動(dòng)买优,或者remote_hosts的配置是否正確。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挺举,一起剝皮案震驚了整個(gè)濱河市杀赢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌湘纵,老刑警劉巖脂崔,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異梧喷,居然都是意外死亡脱篙,警方通過(guò)查閱死者的電腦和手機(jī)娇钱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绊困,“玉大人文搂,你說(shuō)我怎么就攤上這事〕永剩” “怎么了煤蹭?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)取视。 經(jīng)常有香客問(wèn)我硝皂,道長(zhǎng),這世上最難降的妖魔是什么作谭? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任稽物,我火速辦了婚禮,結(jié)果婚禮上折欠,老公的妹妹穿的比我還像新娘贝或。我一直安慰自己,他們只是感情好锐秦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布咪奖。 她就那樣靜靜地躺著,像睡著了一般酱床。 火紅的嫁衣襯著肌膚如雪羊赵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天扇谣,我揣著相機(jī)與錄音昧捷,去河邊找鬼。 笑死罐寨,一個(gè)胖子當(dāng)著我的面吹牛料身,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播衩茸,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼贮泞!你這毒婦竟也來(lái)了楞慈?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啃擦,失蹤者是張志新(化名)和其女友劉穎囊蓝,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體令蛉,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蘸鲸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了翼虫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朦肘。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖脉执,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤兔乞,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站凉唐,受9級(jí)特大地震影響庸追,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜台囱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一淡溯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧簿训,春花似錦咱娶、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至择懂,卻和暖如春喻喳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背困曙。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工表伦, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人慷丽。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓蹦哼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親要糊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子纲熏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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