聊個簡單的話題:如何分析性能需求?


前言

前幾天還在北京出差時候,微信群有個同學問了一個問題,為什么800並發壓測,服務器還沒有報錯?當時群里其他同學提了很多觀點,比如:

  • 並發不夠,加並發!
  • 要不要考慮首頁進來多少人?
  • 是不是有限流,流量都被攔截了?
  • 我看CPU都打滿了,壓測要關注硬件指標!
  • 是不是你壓測機配置比較低,無法發起這么多並發?
  • ............

林林總總感覺說了很多,又感覺都沒說到位。正好周四時候,從同事那里聽到一個性能需求,說來也蠻有意思的,需求大致是這樣:

網關要驗證在跨可用區情況下,支撐20W的TPS。就這一句話,我當時有點詫異(因為以我對我們公司目前業務及技術架構的理解,根本不需要20W的TPS)。

那么,問題來了:如果是你,聽到這樣的“一句話需求”,你會如何評估分析,然后制定壓測方案呢?

這篇文章,聊聊我對這個需求的一些理解和分析,以及我會如何設計性能測試方案。

 

需求評估分析

先來聊聊如何分析這個性能需求,關於性能需求分析,我總結下面幾點roadmap:

接下來,按照上述思維導圖,我會通過幾個不同問題的解答,來描述我的分析思路。

 

誰提的需求,目的是什么?

流量網關的研發同學提了一個性能測試需求:網關要驗證在跨可用區情況下,支撐20W的TPS。

做個關鍵字提取:流量網關、跨可用區、20W的TPS。

 

什么是流量網關?

簡單來說,流量網關就是所有請求的流量入口,承載了所有用戶請求。如下圖所示:

 

 

如何理解跨可用區?

一般來說,雲服務的可用區,可以理解為同一個機房的不同虛擬機集群。

為了避免某個可用區由於網絡硬盤等原因損壞導致服務不可用,跨可用區的服務部署是一種常見的容災手段。

 

流量網關有什么特點?

負載均衡:跨多個服務的動態負載均衡;

身份驗證:即用戶的身份鑒權,登錄態、黑白名單等;

限流限速:基於速率、請求數、並發等維度進行流控;

其他特點:加解密、A/B測試、灰度發布、監控告警、服務治理等功能;

 

壓測流量網關有什么難點?

網關是用戶請求流量的入口,因此訪問壓力會很大,即我們常說的QPS很高。那么在壓測時,要考慮下面幾點:

  • 需要能支撐發起很多並發請求的工具;
  • 網關服務的應用需要部署集群,來應對高並發;
  • 由於只是跨可用區,一般雲服務可控制在0.5ms以內;

 

在什么場景下為誰提供服務?

上面介紹了流量網關的特點,這里的場景指的是業務場景或者說測試場景,即:驗證網關的哪些功能場景下的性能表現。上述的網關特點中,一般需要壓測驗證的場景有鑒權、加解密、身份驗證。

 

目前系統架構調用關系是怎樣的?

做性能測試,最怕的是不了解系統架構就開始無腦高並發!

了解系統架構及服務間的調用關系,才能設計合理的壓測場景,准備對應的腳本和數據。

 

如何搭建滿足需求的性能測試環境?

根據上面的分析,跨可用區的網關應用集群,在搭建環境時,需要考慮的有下述幾點:

  • 集群均勻分布在不同可用區;
  • 網關應用的單機配置(比如8C16G);
  • 虛擬機型保持一致(內核版本、計算型/IO型);
  • 需要綁定專門的域名,SLB和帶寬需要大於預期的指標;
  • 壓測工具需要盡可能的支撐更高的並發流量發起(比如Wrk);
  • 因為涉及到鑒權和身份驗證,需要提前預熱相關的auth、token數據到緩存;

 

如何評估性能需求的技術指標是否合理?

上面提到了性能指標是20W的TPS,那這個指標是否合理呢?

首先,性能需求的技術指標是否合理,要結合實際的業務場景和目前峰值流量及未來增長趨勢來綜合評估

假設流量網關被所有業務接入,業務對RT比較敏感,業務請求RT的目標是10ms;目前的線上峰值QPS是5W-QPS,預計未來半年增長到10W的QPS。

那這個時候,如何評估技術指標,或者說設定合理的技術指標呢?我們可以結合實際情況討論,得到下面這樣的一個技術指標:

  • ART&99RT:≤2ms;
  • 安全水位下的QPS:≥10W;
  • TPS:統計核心業務的核心鏈路當前吞吐能力,做聚合計算,保持一定上浮;

當然,上述的指標有個前提:業務不接受有損。

如果業務接受有損,那么性能的技術指標無須這么苛刻(因為可以限流降級);

 

性能測試方案

說到了性能測試方案,我偶然翻出了19年6月份畫的一個性能測試流程職責說明表,見下圖:

聊到這里,該如何設計性能測試方案呢?答案已經在上述的需求分析里了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM