1 壓測流程
1.1 壓測核心步驟
- 壓測方案确定
- 壓測工具配置
- 壓測執行
- 壓測結果評估
2 壓測方案
2.1 壓測範圍确定
- 小程式首頁(簡稱首頁):使用者進入該頁面涉及的所有商戶端接口(鍊式調用僅需壓測一級接口。)
- 小程式内活動營銷推廣主鍊路(簡稱PR鍊路):使用者走完推廣鍊路涉及的所有商戶端接口
- 權益線上核銷鍊路(簡稱核銷鍊路):使用者完成核銷所涉及的所有商戶接口
2.2 壓測資訊收集
- 收集要求
- URL擷取全量,知道每個URL的調用鍊路
- 壓測是全鍊路的,不會遺漏底層的調用,如果調用了下遊服務(如第三方的城市清單等服務),需要确認下遊服務的系統性能(TPS)
- 務必注意不能讓壓測資料污染線上資料(對于可能污染線上資料的接口,請做好準備工作,如壓測時切換到空庫等)
- 如果有緩存,但是緩存時間較短(緩存有效期不足12小時),建議按無緩存壓(壓測時關閉緩存)
- 以下為某小程式為例
業務位址(小程式内路徑) | 服務 | 接口位址 | 是否有緩存 | 是否調用下遊服務 |
---|---|---|---|---|
未登入,進入首頁 | 初始化session | URL https://test1.domain.com.cn/mwos/rest/home/initSession | 無,寫入資料庫 | 否 |
初始化banner圖檔 | https://test1.domain.com.cn/mwos/rest/home/initHome | 有緩存,24小時更新 | ||
擷取使用者資訊 | https://test1.domain.com.cn/mwos/rest/miniapp/getUserInfo | 是,調用支付寶 https://openapi.alipay.com/mwos/rest/miniapp/getUserInfo | ||
擷取登入資訊 | https://test1.domain.com.cn/mwos/rest/miniapp/login | 無,讀取資料庫 | ||
首頁->點餐按鈕 | 擷取城市定位 | https://test1.domain.com.cn/mwos/rest/misc/search/getCityByRgeoCode | 是,調用某提供商 https://XXX.XXX.com/getLocation |
2.3 計算壓測模型
根據曝光量與轉化率模型計算小程式壓力承受目标:
假設小程式全天曝光量為3.6億,轉化率3%,按照80:20定律計算:
(3.6億 * 0.03 * 0.8) / (24 * 3600 * 0.2)= 500 tps
根據接口在鍊路中被依賴情況計算各接口壓力承受目标:
如現在商戶後端有3個接口A,B,C。每個接口在鍊路中被依賴的情況如下:
鍊路名稱 | 要求TPS | 該鍊路需要調用的接口 |
---|---|---|
首頁 | 要求500tps | 接口A |
接口B | ||
PR鍊路 | 要求200tps | |
接口C |
是以各個接口壓測目标值應該為:
接口A:500tps
接口B:700tps(500+200)
接口C:200tps
3 壓測工具配置
壓測工具選型:

支付寶行業壓測中心(文檔檢視需要使用支付寶開放平台賬号登陸)
平台位址:
https://stresstest.alipay.com幫助文檔:
https://stresstest.alipay.com/main#/help.htm4 壓測執行
注意事項:
如果目标是500tps,不要一開始就施壓500tps,先用10tps先看下,根據伺服器、資料庫負載情況,再慢慢追加;
調整的原則是:
- 每個等級壓測5分鐘,觀察後在調整;
- 平台主要觀察:耗時趨勢,成功率
- 服務端監控:cpu、DB: load,cpu,gc;
- 如果按100tps追加,前面追加可以一直100tps追加,後面接近預期時,追加慢一點,如改成50tps;
- 如果發現從500沒有問題,但是追加100發現有報錯,那麼不要直接暫停,先将tps降一下,降到850看下效果,再根據情況調整,摸到一個準确的值;
使用技巧:
- 頁面上可以使用固定模式,時間選擇長一點,選個2小時;
- 如果發現耗時增長,壓力過大,伺服器報錯,立馬停止;
- 下次啟動時,還是需要慢慢增加,可以考慮稍微大一點的值增加,比如200tps,追加的時候可以稍微快一點,因為已經知道在500下不會有壓力;
5 壓測評估
類别 | 判斷次元 | 不通過 | 通過 | 備注 |
---|---|---|---|---|
服務端性能 | 逾時機率 | 大于百分之一 | 小于百分之一 | 性能測試團隊根據通過标準,判定被測性能點不通過,需要由專家組來評審是否上線 |
錯誤機率 | ||||
TPS | 小于期望高峰值 | 大于期望高峰值 | ||
CPU 使用率 | 大于 75% | 小于 75% | ||
響應時間 | 大于2s | 小于2s | ||
Load | 平均每核 CPU 的 Load 大于 1 | 平均每核 CPU 的 Load 小于 1 | ||
JVM 記憶體使用率 | 大于 80% | 小于 80% | ||
Full GC 頻率 | 平均小于半小時 1 次 | 平均大于半小時 1 次 |