大廠實踐篇:初識壓測

 壓測全稱爲壓力測試,是確立系統穩定性的一種測試方法,通常在系統正常運作範圍之外進行,以考察其功能極限和隱患。


在開發接口或者功能點完成後,就需要對接口或功能點壓力測試,測試出接口的極限以應對較大併發,舉一個最直接的例子:淘寶雙十一購物節,2018年淘寶交易創建峯值達到49.1萬筆/秒,而在雙十一之前淘寶都要對系統進行壓測,看是否能夠抗住每年創新高的併發!


大白話:不停地請求服務的接口,設置每秒的請求量以及持續時間,看看什麼時候服務開始處理失敗,從而得出服務的性能指標。


文章目錄

  • 簡單認識壓測(的目的)

  • 介紹壓測平臺應該有哪些能力

一、壓測目的

  • 挖掘系統瓶頸點

    • cpu計算能力

    • 業務代碼(頻繁full gc等)

    • DB性能

    • 線程模型

    • 帶寬等

  • 建立性能基線

    • qps (request per second)

    • rt (response time)

    • 用於線上擴容策略配置等

  • 優化系統性能

    • 配置DB主從

    • jvm參數優化

    • 緩存改造

    • 線程模型改造等

二、壓測平臺應該具備的能力

1.壓測場景

  • rpc場景(一般爲壓測單個服務的性能)

    • 回放錄製的流量

    • 自定義的流量

  • http場景(一般爲全鏈路壓測)

    • 回放錄製的流量

    • 自定義的流量

2.數據(準備數據用於壓測的時候使用)

  • 錄製任務

    • http請求的錄製

    • rpc請求的錄製

3.壓測參數配置

  • 壓測類型

    • 普通壓測(普通循環播放流量)

    • 調試(單次流量播放,一般用於調試鏈路是否接通)

    • 遞增(設置壓測的多個階段,每個階段配置不同的qps以及持續時長)

  • 配置

    • 變量配置(單是流量錄製是不夠的,特殊的接口(比如關注行爲)需要變化請求的參數,因此需要支持變量配置)

      • 自增變量

        • 設置起止值

        • 設置步長

      • 文件變量

        • 讀取變量列

      • 時間變量

        • 對當前毫秒戳做加減操作

      • 計算變量

        • uuid

        • 區間random

      • 預定義變量(就是寫死一個值)

    • 請求配置

      • 指定配置好的變量

      • 指定接口與方法/url

      • 指定機器

      • 超時時間

      • 變量

    • 壓測配置

      • 初始qps

      • 期望最大qps

    • 詞表配置

      • 循環回放流量錄製中的流量

    • 資源隔離

      • DB隔離

      • 緩存隔離

      • MQ隔離

    • 靜默期(那個時間段不可以進行壓測)

4.保護策略(配置不同的監控項以及異常的處理策略:比如停止壓測或者降低壓測流量等)

  • db保護策略

    • 告警之後自動降低指定的qps或者停止壓測

    • 配置db的告警閾值

  • 機器保護策略

    • 監控cpu gc 內存等等等等

    • 降低qps或者停止

  • 服務保護策略

    • 監測請求的響應情況

    • 降低qps或者停止

5.監控(配置不同的監控項用於判斷性能瓶頸)

  • 客戶端響應情況監控

    • qps

    • rt

    • 錯誤率

  • 服務端監控

    • cpu

    • 線程池

    • 服務接口等待隊列大小等

    • 業務日誌

    • 機器

三、壓測報告

  • 需要輸出壓測報告用於分析和記錄

    • 各個監控項的指標

    • 壓測結果的指標

    • 等等


今天大家簡單介紹了一些關於壓測的知識點,這些都是在實際項目生命週期中需要用到的知識點,文章開頭已經講過壓測的重要性,希望大家能有所瞭解並掌握!


歡迎大家評論區交流

本文分享自微信公衆號 - 豬哥Java(pig-python)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章