互聯網大廠必學技能:壓力測試!

本文收錄在豬哥GitHub: https://github.com/pig6/Java 中,本項目收集一線大廠面試、實戰、Java學習路線等。

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

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

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

1、筆記目的

  • 簡單認識壓測(的目的)
  • 介紹壓測平臺應該有哪些能力

2、壓測目的

  • 挖掘系統瓶頸點緩存

    • cpu計算能力
    • 業務代碼(頻繁full gc等)
    • DB
    • 線程模型
    • 帶寬等
  • 創建性能基線併發

    • qps (request per second)
    • rt (response time)
    • 用於線上擴容策略配置等
  • 優化系統性能dom

    • 配置DB主從
    • jvm參數優化
    • 緩存改造
    • 線程模型改造等

3、壓測平臺應該具有的能力

1.壓測場景

  • rpc場景(通常爲壓測單個服務的性能)jvm

    • 回放錄製的流量
    • 自定義的流量
  • http場景(通常爲全鏈路壓測)性能

    • 回放錄製的流量
    • 自定義的流量

2.數據

準備數據用於壓測的時候使用學習

  • 錄製任務測試

    • http請求的錄製
    • rpc請求的錄製

3.壓測參數配置

  • 壓測類型

    • 普通壓測(普通循環播放流量)
    • 調試(單次流量播放,通常用於調試鏈路是否接通)
    • 遞增(設置壓測的多個階段,每一個階段配置不一樣的qps以及持續時長)
  • 配置

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

      • 自增變量

        • 設置起止值
        • 設置步長
      • 文件變量

        • 讀取變量列
      • 時間變量

        • 對當前毫秒戳作加減操做
      • 計算變量

        • uuid
        • 區間random
      • 預約義變量(就是寫死一個值)
    • 請求配置

      • 指定接口與方法/url
      • 指定機器
      • 超時時間
      • 變量

        • 指定配置好的變量
    • 壓測配置

      • 初始qps
      • 指望最大qps
    • 詞表配置

      • 循環回放流量錄製中的流量
    • 資源隔離

      • DB隔離
      • 緩存隔離
      • MQ隔離
    • 靜默期(那個時間段不能夠進行壓測)

4.保護策略

配置不一樣的監控項以及異常的處理策略:好比中止壓測或者下降壓測流量等

  • db保護策略

    • 配置db的告警閾值

      • 告警以後自動下降指定的qps或者中止壓測
  • 機器保護策略

    • 監控cpu gc 內存等等等等
    • 下降qps或者中止
  • 服務保護策略

    • 監測請求的響應狀況
    • 下降qps或者中止

5.監控

配置不一樣的監控項用於判斷性能瓶頸

  • 客戶端響應狀況監控

    • qps
    • rt
    • 錯誤率
  • 服務端監控####

    • 業務日誌
    • 機器

      • cpu
      • 線程池
      • 服務接口等待隊列大小等

4、壓測報告

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

    • 各個監控項的指標
    • 壓測結果的指標
    • 等等

今天爲你們簡單列舉了一些壓測的知識點,之後有時間再爲你們詳細介紹哦,歡迎一鍵三連!!!

相關文章
相關標籤/搜索