1、什么是性能測試監控體系?
為什么要有監控體系?
原因:
1、項目-日益復雜(內部除了代碼外,還有中間件,數據庫)
2、一個系統,背后可能有多個軟/硬件組合支撐,影響性能的因素可能是任意一個組件,如果僅僅是通過TPS、RT、吞吐量這些單個目標去分析,會占用大量的時間,所以我們需要用到監控體系
影響性能的因素有很多,我們可以從以下幾個層面去分析:
網絡問題:帶寬是否足夠,分析有沒有丟包
服務層問題:TPS、RT、錯誤率、異常、垃圾回收
中間件問題:超時、線程池、緩存命中、消息積壓
數據庫層面:鎖、索引、慢SQL
服務器層面:CPU、內存、磁盤
以上影響因素中服務層問題
是最能反應問題所在,因為:服務層問題:反應的是當前負載下性能表現,這是結果
但是為什么是這個數據?哪些東西影響了他?怎么優化?這才性能測試的價值所在
測試手法:通過基準測試+負載測試,看到對應結果
核心概念:任何一個環節
有性能問題,這個程序一定有性能問題
如果我們需要詳細點去分析問題可能還需要將上面例舉點影響因素全部分析一遍,這會花費大量的時間且用到大量的插件這時我們需要需要一個工具能把基礎監控、指標監控、業務監控、鏈路監控
都放在一起去供我們查看––––grafana
grafana:負責展示測試數據,能支持長時間的測試
2、監控體系的面板數據是怎么來的?
jmeter配置后端監聽器,把jmeter數據提交到InfluxDB時序數據庫
進行數據庫保存再傳給grafana展示
(這四個端都是獨立的)
tips:如果當grafana沒有顯示圖表時怎么分析問題?
答:influxDB配置是否有問題——>jmeter是否有誤(一級一級向上排查)
3、怎么去搭建監控?
首先準備好grafana和influxDB安裝包(安裝包,會放入資源庫,自取)
打開 Xshell工具 (可在英文官網下載免費版本)
打開xshell工具后,點擊「新建文件傳輸」
會彈出文件傳輸框
這樣我們就可以把本機的安裝包文件直接復制到linux系統,
上傳過程中也能看到對應的進程
安裝完后,我們在Xshell中通過輸入ls
命令查看一下目錄,找到存放grafana的文件,cd 文件名稱進入該文件夾并找到對應文件
然后我們通過命令sodo yum install -y 文件名稱
安裝grafana
(注意??,yum命令環境需要提前安裝,請在資源包中查看對應資源包)
我們可以嘗試ping 一下百度,檢查一下網絡是否正常(如遇問題請查看另外一篇文章**《虛擬機及網絡配置》**)
安裝完后,輸入命令重新加載一下收獲程序配置sudo systemctl daemon-reload
然后通過命令sudo systemctl start grafana-server
去啟動一下grafana
再通過命令sudo systemctl status grafana-server
檢查一下是否啟動成功,如果出現failed表示啟動失敗,出現active表示啟動成功
啟動完之后我們就可以通過網頁端去訪問了(網址:虛擬機的ip+端口3000)grafana端口默認為3000,默認賬號密碼都是admin
進入grafana后,我們目前需要關注兩個地方「Dashboards」和「Data souces」
Dashboards:我們可以通過import 來導入jmeter文件
Data souces :引進influxdb 數據庫作為數據源來使用(用于傳入數據)
設置開機啟動命令
sudo systemctl enable grafana-server.service
,虛擬機開機時自動啟動grafana
sudo systemctl enable influxdb.service
,虛擬機開機時自動啟動InfiuxDB
開機啟動之后,我們進入輸入influx進入對應的環境,然后創建一個數據庫名詞為jmeter的數據庫create database jmeter
,創建完后退出influxDB,輸入命令exit
接著我們打開jmter,并添加一個「后端監控器」
添加完后,這里我們需要注意的是:后端監聽器實現一定要選對,不然數據傳輸不成功
然后我們去修改InfluxdbURL,IP地址,輸入我們需要進行測試的虛擬機IP(已經安裝了influxdb的虛擬機) +8086端口
配置好后,jmeter的數據會正常傳入influxDB數據庫中,然后回到grafana,配置對應的influxdb來接收數據
操作步驟:進入「Data sources」––點擊「Add data source」––選擇并點擊「InfluxDB」––在http中輸入測試機的IP地址
輸入數據庫名詞,請求選擇get請求,最后點擊保存
到這里influxDB就配置完了,配置成功的話頁面會彈出對應提示
接著我們還需要配置grafana,進入「Dashboard」––點擊「import」
然后我們需要上傳json文件,(對應json文件會放在本文章對應的資源包中)
上傳完json包后––DB name需要選擇influxDB––然后輸入數據庫名詞jmeter(這是我們自己創建的名稱)––最后點擊import
成功之后彈出數據大屏,可以通過刷新頁面的方式來刷新數據
最后我們啟動一下虛擬機的服務器,然后到jmeter中點擊「運行」
監控到的數據會在數據大屏中顯示(測試情況可以直接分享網頁鏈接給到領導查看)
4、理解性能測試到底在分析什么?
性能測試在做什么?––通過我們給定的場景,去看服務器的表現形式
工作流程:
接到需求:把項目的性能測試一下––目標:能扛住多少并發?(瓶頸)
我們需要做的事情:確認我們的資源(我不用一個人去解決所有問題!)
tips:如果安排的人不懂性能測試(你就在測試環境測)溝通:這么測試沒用,結果不會準
性能測試計劃:因為測試環境與生產環境不一致,所以測試結果不一定準確
測試環境的部署與搭建:不用自己去部署項目,可以找開發幫忙搭建
性能測試:初期-我們只需要干兩件事––找到對應流程中的接口(如果不確定,可以用錄制的方式找
)寫到測試計劃中(還需要找架構師確認我們初期選擇的接口是否有遺漏
)
手法:
1、找瓶頸––基準測試數據+自己的推論,找到單接口吞吐量xxxx,
2、梯度壓測––找到結論
3、上下浮動10%找到真正的瓶頸值為多少并寫入測試報告中