一、前期調(diào)研
1、項目選型
項目:選擇之前自己玩的基于開源項目ruoyi二次開發(fā)的一個小游戲的項目,springboot框架。
部署:阿里云ECS最低配置,單核cpu,1.9G內(nèi)存。
接口:獲取玩家信息/getInfo接口(GET請求)
2、測試工具選型
腳本:jmeter
測試數(shù)據(jù)存儲:influxdb
監(jiān)控:grafana、PerfMon Metrics Collector插件
二、準備階段
1、監(jiān)控環(huán)境搭建
2、測試腳本編寫
編寫思路:
ruoyi項目本身自帶的權(quán)限控制,需要先登陸獲取token,用于后面請求被測接口getInfo時在header中攜帶
由于測試單接口并發(fā),避免冗余操作,使用僅一次控制器,把登陸的流程包起來(當(dāng)然,如果是想測試事務(wù)的并發(fā),可以把僅一次控制器改成事務(wù)控制器)
-
ruoyi項目的登陸是基于圖形驗證碼實現(xiàn)的,驗證碼結(jié)果code存儲在redis里,這里選擇使用JSR233 Sampler編寫beanshell腳本請求redis獲取code存入jmeter變量vars中(也可使用jmeter插件Redis Data Set,但我這里報錯了,感興趣的可以嘗試一下,我感覺還是腳本比較靈活一些,后來就沒折騰插件)
JSR233 Sampler -
后端監(jiān)聽器用于將測試結(jié)果存儲于influxdb中,供grafana獲取
后端監(jiān)聽器 -
PerfMon Metrics Collector用于實時監(jiān)控服務(wù)器cpu、mem等
PerfMon Metrics Collector
三、開始測試
1、負載測試-確定最大負載
負載測試目的是找到系統(tǒng)保持正常運行前提下的最大負載數(shù)(也就是并發(fā)量),此過程不需要跑較長的時間,通過關(guān)注接口請求的結(jié)果和響應(yīng)時間調(diào)整線程數(shù)量。
線程數(shù)8跑5分鐘:
時間平均2.08s,有1個報錯
改成6線程:
最大響應(yīng)時間也就1s左右,無報錯
改成7線程試試:
最大20.9s,有一個報錯
綜上,得到結(jié)論最大負載數(shù)為6
2、壓力測試-較大負載長時間
等待中……