天天看點

壓力測試指導方案1 壓測流程2 壓測方案3 壓測工具配置4 壓測執行5 壓測評估

1 壓測流程

1.1 壓測核心步驟

  • 壓測方案确定
  • 壓測工具配置
  • 壓測執行
  • 壓測結果評估

2 壓測方案

2.1 壓測範圍确定

  1. 小程式首頁(簡稱首頁):使用者進入該頁面涉及的所有商戶端接口(鍊式調用僅需壓測一級接口。)
  2. 小程式内活動營銷推廣主鍊路(簡稱PR鍊路):使用者走完推廣鍊路涉及的所有商戶端接口
  3. 權益線上核銷鍊路(簡稱核銷鍊路):使用者完成核銷所涉及的所有商戶接口

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 壓測工具配置

壓測工具選型:

壓力測試指導方案1 壓測流程2 壓測方案3 壓測工具配置4 壓測執行5 壓測評估

支付寶行業壓測中心(文檔檢視需要使用支付寶開放平台賬号登陸)

平台位址:

https://stresstest.alipay.com

幫助文檔:

https://stresstest.alipay.com/main#/help.htm

4 壓測執行

注意事項:

如果目标是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 次