作者:拂衣
引言
“壓測腳本在我壓測環境上跑的好好的,成功率、RT 都很正常,放到本地跑怎么表現就不一樣了?”
大家壓測時是否都遇到過上述問題?
除了老生常談的硬件配置原因,流量分布因素往往容易被忽略。
為什么要模擬真實用戶流量
壓測是為了模擬一定量的真實用戶對系統進行訪問。真實的用戶量可以通過設置並發線程數(虛擬用戶數)來模擬;用戶的來源分布,具體說是流量分布,也是重要的模擬條件。
輔助全局容量規划
用戶量較大的應用,一般會采用異地多活的部署方式。出於成本考慮,各中心部署規格不一定相同,當地用戶越多,中心實例數越多,規格越高。大促壓測就是要按照真實用戶分布比例,來模擬流量。測試出哪些中心容量水位過高,會造成當地用戶響應延遲甚至服務崩潰;哪些中心容量水位又過低,可以適當降級,將多余的實例額度合理分配出去。實現從全局層面規划容量,在撐住大促流量的同時,也合理控制成本。
測試出真實相映延遲
數據表明,對於電商業務核心接口,響應時間每增加 100ms,營收額對應下降 1%。如果施壓機和服務器在同一機房,測試出的請求響應時長(RT)會比真實情況要低,因為用戶是全國分布的。對響應延遲誤判低出的零點幾秒,就可能會造成對大促成交額的錯誤預期。
通過下圖可以直觀的看出問題:

如何模擬真實流量
傳統方案
大部分業務的用戶並不是按地域均分的,相反,往往很不均勻。要模擬真實流量分布,施壓機需要在各地分散部署,並且支持按地域、按量分配,在壓測時,還要支持實時的統一調度。如果施壓機都分布在一個 Region,甚至是一個可用區內,那是無法模擬出來自全球用戶請求的。
這樣就需要在國內和海外部署大量的施壓機,如果壓測頻率並不很高,那機器的閑置成本可想而知。而按地域、按量分配的調度系統,也需要一定的維護成本。
阿里雲 PTS 方案
使用阿里雲性能測試服務(PTS)壓測時,開啟流量地域定制功能,即可指定施壓機的地域分布,目前支持全球 22 個 Region 的地域定制。阿里雲 PTS 作為大促壓測重武器,“威力”不減,上手更輕量化。
支持地域見表格:

無論選用哪種方案,最終都要達到施壓機地域分布和用戶分布一致。
操作指南
1、創建一個壓測場景,參考 PTS 指導文檔(具體請見文末相關鏈接);
2、在施壓配置中,打開流量地域配置,按業務需求分配流量比例,右側可以看到流量分布的餅圖:

3、開始壓測,在壓測概覽頁,可以查看流量地域分布:


總結
壓測時,壓力流量來源是一個很容易被忽略的因素,要保證壓測結果真實可信,就需要按照真實用戶的地域分布來准備施壓機。阿里雲 PTS 提供了流量地域定制功能,即壓即用,支持全球 22 個 Region,9.9¥體驗版資源包即可使用。
相關鏈接
1)阿里雲PTS:
https://pts.console.aliyun.com/#/overviewpage
2)開通PTS體驗版資源包
https://common-buy.aliyun.com/?commodityCode=ptsbag#/buy
3)PTS 指導文檔https://help.aliyun.com/document_detail/90887.html
