Jmeter 分布式架構和服務器性能監控解決方案

在對項目做大并發性能測試時,常會碰到并發數比較大(比如需要支持10000并發),單臺電腦的配置(CPU和內存)可能無法支持,這時可以使用Jmeter提供的分布式測試的功能來搭建分布式并發環境。

一、Jmeter分布式執行原理

架構示意圖

need-to-insert-img

1、Jmeter分布式測試時,選擇其中一臺作為調度機(Master),其它機器作為執行機(Slave)。

2、執行時,Master會把腳本發送到每臺Slave上,Slave拿到腳本后就開始執行,Slave執行時不需要啟動GUI,只需要在Slave上執行對應的啟動命令,可以理解它是通過命令行模式執行的。

3、在被監控的Server服務器上安裝性能數據采集插件Agent后,在執行過程中,Agent會把結果實時回傳給Master,Master會收集所有Server的信息并匯總。

二、Jmeter安裝教程

1、JMeter需要JDK環境,所以需要先安裝JDK

2、下載JMeter的zip包

3、這里下載的是apache-jmeter-3.0.zip, 進行解壓

Windows使用工具解壓,例如:D:\Program Files (x86)\apache-jmeter-3.0

Linux使用unzip命令解壓,例如:unzip apache-jmeter-3.0.zip ?-d apache-jmeter-3.0 (-d 為指定要解壓到的文件夾名)

4、設置環境變量

Windows:右鍵“我的電腦”-》高級-》環境變量,在“系統變量”中點擊“新建”,在變量名中輸入:JMETER_HOME,變量值中輸入:D:\Program Files (x86)\apache-jmeter-3.0,點擊確定即可,再修改CLASSPATH變量,變量值中添加如下值:%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;% JMETER_HOME %\bin; ?然后點擊確定即可

Linux:不配置環境變量,執行的時候只需要先切換到安裝的目錄

5、檢查jmeter是否安裝OK

Windows:打開cmd命令,輸入jmeter.bat回車,也可以打開Jmeter的目錄,雙擊jmeter.bat文件,如果正常啟動Jmeter GUI界面則說明安裝配置成功

Linux:使用cd命令切換至Jmeter目錄下的bin目錄,然后使用輸入sh jmeter.sh啟動Jmeter GUI界面,彈出界面則說明安裝成功

三、執行機(slave)配置

執行機只負責接收調度機的任務去執行并發,配置比較簡單。

1、切換至已安裝好的Jmeter目錄下的bin目錄

Windows 雙擊jmeter-server.bat,啟動成功如下圖:

need-to-insert-img


Linux 通過cd命令切換至Jmeter目錄的bin目錄,執行

./jmeter-server -Djava.rmi.server.hostname=192.168.0.178 (后面為ifconfig查到的IP地址)

2、上圖上標紅的IP和端口會在master里配置時用到。IP就是slave機器IP,端口默認是1099,端口也可以自定義,見第五點。

3、如果有多臺slave機,重復1步驟。

四、調度機(Master)配置

調度機用作腳本配置、觸發啟動,服務器性能數據監控

1) 調度機負責腳本的分發

1、腳本創建:訪問百度

need-to-insert-img

2、配置Slave機信息,找到Jmeter的bin目錄下jmeter.properties文件,修改remote_hosts的內容,IP和Port是slave機的IP以及默認端口1099,此處的端口可以自定義,見第五點:

remote_hosts=192.168.0.178:1099,192.168.0.179:1099 多臺slave之前用","隔開,可以看到標紅的這個就是上面截圖slave的IP,端口默認為1099

3、打開Jmeter,選擇運行,有運程啟動、運程全部啟動兩個選項:

need-to-insert-img


4、選擇遠程啟動-->啟動單個Slave或者全部啟動

這里啟動了192.168.0.178:1099一臺slave,所以只有一個結果(線程數和循環次數都是1)

need-to-insert-img

slave控制臺信息:

need-to-insert-img

2)調度機負責性能數據的采集

性能測試時,我們的關注點有兩部分,第一服務本身并發、響應時間、QPS,第二服務器的資源使用情況:cpu memory I/O disk等,JMeter的plugins插件可以實現對"二"的監控,具體操作步驟如下(主要記錄我的實踐過程):

1、下載插件

訪問網址http://jmeter-plugins.org/downloads/all/,下載三個文件。其中JMeterPlugins-Standard和JMeterPlugins-Extras是Master調度機的,ServerAgent是Server服務機的。

need-to-insert-img

2、解壓Master調度機的兩個文件,進入其路徑JMeterPlugins-Extras(Standard)-1.3.1\lib\ex、JmeterPlugins-Extras.jar(JmeterPlugins-Standard.jar)兩個文件,放到JMeter客戶端的 lib/ext文件夾中,打開JMeter,可在監聽器中看到Permon Metrics Collector,客戶端配置成功。

need-to-insert-img

3、將ServerAgent-2.2.1.zip上傳到被測服務器,解壓,進入目錄,Windows環境,雙擊ServerAgent.bat啟動;linux環境執ServerAgent.sh啟動,默認使用4444端口,出現如下情況即服務端成功:

need-to-insert-img


4、ServerAgent啟動的校驗

a、 在筆記本電腦打開telnet監聽(控制面板-程序-打開或關閉Windows功能-telnet客戶端勾選打開)

b、cmd進入命令框,輸入如下內容:

telnet yourip ?4444 ? #連接ServerAgent

test #發送test進行測試

exit #退出,即斷開連接

c 、觀察server端是否有接收到消息,有出現則說明ServerAgent打開成功

5、Jmeter客戶端的監聽測試

a、打開JMeter.bat,添加監聽器Permon Metrics Collector-Add Row添加一行monitor配置(修改Host/IP為測試IP)-運行-觀察server日志即chart圖標內容。

need-to-insert-img

need-to-insert-img


b、添加線程組,設置循環次數為"永遠";為線程組任意添加一個Sampler(并不設置參數),點擊運行。如無意外可以獲取chart圖,點擊stop,即結束監聽數據。全部配置圖如下

need-to-insert-img

need-to-insert-img

need-to-insert-img


五、自定義端口:

上面其實已經實現了Jmeter的分布式測試,這部分主要介紹下如何自定義slave端口:

1、Slave:在slave機的Jmeter的bin目錄下,找到jmeter.properties文件,修改如下兩個配置項,比如修改為1888:

server_port=1888

server.rmi.localport=1888

2、啟動slave機上的jmeter-server.bat,如下圖,端口已經修改為:1888

3、Master:修改master機器的jmeter.properties文件:

remote_hosts=10.13.223.202:1000,10.13.225.12:1888

4、重啟jmeter.bat,如下圖,端口已經變了:

need-to-insert-img


六、其它說明:

1、調度機(master)和執行機(slave)最好分開,由于master需要發送信息給slave并且會接收slave回傳回來的測試數據,所以mater自身會有消耗,所以建議單獨用一臺機器作為mater。

2、參數文件:如果使用csv進行參數化,那么需要把參數文件在每臺slave上拷一份且路徑需要設置成一樣的。

3、每臺機器上安裝的Jmeter版本和插件最好都一致,否則會出一些意外的問題。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容