jmeter分佈式壓測

jmeter分佈式壓測

1 需求分析

1.1 需求

一、 單實例SkyWalking主機CPU80%時,測試其支持TPS值是否能達到5000html

二、 單實例SkyWalking主機持續加壓2小時,TPS5000時,測試SkyWalking的穩定性java

三、 對SkyWalking集羣性能測試,測試其TPS爲5000時,集羣的負載是否均衡apache

四、 分析 SkyWalking Agent探針對被測試服務的性能影響centos

官網給出參考:單實例SkyWalking的cpu爲80%時,tps爲5000服務器

1.2 測試策略

  1. tps已知,5000cookie

  2. 驗證性需求,單實例SkyWalking主機CPU指標80%左右時,測試tps值分佈式

  3. 穩定性測試,單實例SkyWalking主機持續加壓2小時,tps5000工具

  4. SkyWalking集羣性能測試,採用jmeter集羣壓力機測試,測試SkyWalking集羣負載是否均衡post

  5. 經過加SkyWalking Agent探針和不加探針,分別壓測,分析SkyWalking Agent探針對被測服務167的性能影響性能

2 設計測試場景

  1. 單個訂單接口模擬應用程序,被測主機167

  2. 單實例SkyWalking145主機監控被測服務167,採用逐步加壓方式,測試145的CPU達80%左右時,TPS值是否可達5000,加壓大約6分鐘

  3. 單實例SkyWalking145主機監控被測服務167,TPS值維持5000,持續加壓2小時,測試穩定性

  4. SkyWalking集羣監控被測服務167,TPS值維持5000,集羣壓力機加壓30分鐘,測試SkyWalking集羣負載是否均衡

  5. 經過加SkyWalking Agent探針和不加探針,單臺壓力機分別壓測10分鐘,分析SkyWalking Agent探針對被測服務167的性能影響

3 環境部署

3.1 組網圖

單實例SkyWalking監控被測服務167組網圖以下:

 

集羣 SkyWalking監控被測服務167組網圖以下:

注:全部機器部署在同一網段下

3.2 硬件配置

兩臺壓力機171和178均爲Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz,8核8G

其餘主機均爲Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz,4核8G

3.3 測試工具

  1. 採用jmeter腳本壓測

  2. 採用collectd+influxdb+grafana做爲實時監控,其監控數據可持久保存,方便查詢

  3. 採用netdata做爲實時監控,壓測時,觀察比較方便

3.4 測試環境部署

171和178做爲壓力機,173做爲調度機,三臺機器均安裝jmeter

3.4.1 jmeter安裝和環境變量設置

  1. centos7,/home目錄下,建立jmeter用戶

    useradd jmeter && echo jmeter | passwd --stdin jmeter
  2. 官網下載jmeter安裝包,解壓

    bing.com搜索jmeter,下載安裝包,直接解壓便可

    解壓後,user.properties文件末端添加:

    CookieManager.check.cookies=false

  3. 配置環境變量

    jmeter環境變量配置:

    sudo vi /etc/profile
    末尾添加:
    export JMETER_HOME=/home/jmeter/apache-jmeter-4.0
    export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
    export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
    保存後source下,使其生效
    source /etc/profile
  4. 檢查環境變量是否生效

    # jmeter --help
      _   ____   _   ____ _   _ _____       _ __ __ _____ _____ _____ ____
      / \ | _ \ / \ / ___| | | | ____|     | | \/ | ____|_   _| ____| _ \
    / _ \ | |_) / _ \| |   | |_| | _|   _ | | |\/| | _|   | | | _| | |_) |
    / ___ \| __/ ___ \ |___| _ | |___ | |_| | | | | |___ | | | |___| _ <
    /_/   \_\_| /_/   \_\____|_| |_|_____| \___/|_| |_|_____| |_| |_____|_| \_\ 4.0 r1823414

    Copyright (c) 1999-2018 The Apache Software Foundation


    To list all command line options, open a command prompt and type:

    jmeter.bat(Windows)/jmeter.sh(Linux) -?

    --------------------------------------------------

3.4.2 分佈式壓力機配置和啓動

壓力機171/178配置以下:

jmeter的bin目錄下jmeter.properties中:

remote_hosts=10.34.110.171 #本機IP
server_port=1099 # 前面註釋去掉
server.rmi.localport=1099 # 前面註釋去掉
server.rmi.ssl.disable=true

除此以外,服務器配置了雙網卡,內外網的隔離,jmeter在啓動時會優先找內網地址,不識別配置的服務器地址,修改方法以下:

/apache-jmeter-4.0/bin目錄下jmeter-server文件:

RMI_HOST_DEF=-Djava.rmi.server.hostname=10.34.110.171 #將前面註釋去掉,並修改成壓力機的IP

保存後,執行命令./jmeter-server,看到啓動的IP和端口1099便可

實際壓測時,可將壓力機後臺運行,nohup ./jmeter-server &

調度器173配置以下:

jmeter.server中:

remote_hosts=10.34.110.171:1099,10.34.110.178:1099
server_port=1099
server.rmi.localport=1099
server.rmi.ssl.disable=true

修改後,保存便可

3.4.3 分佈式實時監控部署

collectd+influxdb+grafana環境搭建以前已寫過,參考以下:

[collectd+influxDB+grafana搭建性能監控平臺](https://www.cnblogs.com/hanzhang/p/9240592.html)

3.4.4 實時監控netdata部署

netdata部署以前已寫過,參考netdata實時監控部署

4 編寫測試腳本

  1. 單一訂單接口,http請求,post方法

  2. 思考時間10ms

  3. 固定吞吐量,保持tps在5000左右

    jmeter固定tps壓測參考

  4. 關閉監聽器,斷言,debug sample等,保存腳本,並傳到173調度機上

5 執行測試腳本

  1. 173調度機上執行測試腳本命令以下:

    nohup jmeter.sh -R 10.34.110.171:1099,10.34.110.178:1099 -n -t SkyWalking_test.jmx -l ../jtl/rpjq01.jtl -e -o ../report/rpjq01 &

    後臺運行執行腳本,可經過日誌查看執行記錄,執行完成後,可生成html的報告

  2. 日誌以下

    tailf jmeter.log
  3. 關停

    因已配置jmeter的環境變量,關停測試時,任意路徑下執行stoptest.sh便可,此時壓力機再也不加壓,但仍在啓動中;

    若執行shutdown.sh命令,則關閉壓力機,從新執行時,需先開啓壓力機

  4. 觀察後臺監控netdata和grafana面板,須要時,作好記錄

6 收集數據,給出報告

jmeter的報告以文件夾方式生成,打成zip包,下載到本地,解壓,訪問html頁面便可

實時監控grafana可查看壓測過程的曲線圖

結果分析

7 發送報告,歸檔,通知需求方

出具測試報告,並提交

相關文章
相關標籤/搜索