壓測平台實現原理

2022-10-09 20:00:25 字數 2809 閱讀 5226

(1)怎麼理解壓測系統

官方理解:基於實際的生產環境,系統環境,模擬海量使用者的真實請求,對業務進行整個鏈路的壓力測試,並持續調優的過程。

白話理解:槍的測試、盾的測試,測試平台能不能防彈。壓測是不斷密集的向平台發射子彈,平台能越實時越真實的詳細的給使用者結果越好。

自我認識:壓測系統是模擬多使用者行為的系統。系統需要處理的使用者行為是,從web開發發起請求,到服務層,到資料層,最終將請求結果返回給使用者。

(2)全鏈路壓測的的關鍵:

持續調優:壓力發出去,不管系統表現能力如何的壓測是沒有意義的。壓測壓測完了,需要知道系統的效能節點在**。

【備註】:由於全鏈路壓測開始於2023年阿里、後來於16~18年傳播於各大網際網路公司,因此持續調優的概念,各大公司並不一致。

(3)與普通壓測的區別

普通壓測

全鏈路壓測

單機或者單集群壓測

從nginx伺服器到應用伺服器的各個集群,到各個資料節點都能被壓測到

壓測核心業務鏈路

所有鏈路都壓測到

人為構造請求資料

以線上真實請求為基礎

壓測結果放大後不能真值的反應系統容量

壓測結果放大後,更能真值的反應系統容量

線下環境進行壓測

1.業務增長快、海量流量、系統整體表現怎麼樣?瓶頸在**?系統容量規劃怎麼樣?

比如,根據今年的線上容量,規劃明年是否要做機器擴容,要採購多少臺機器,這些需要資料支援。

2.業務場景、技術框架複雜、線上環境很複雜,因此單機單節點壓測結論的總和都無法反映出整個全鏈路壓測結論。

3.線下的任何模擬都無法反映線上環境,且線下環境越接近線上環境,成本越高。

4.提前演練,將流量洪峰提前到來,以便於驗證系統的穩定性。比如阿里的雙11,今年的流量可能是去年的5倍、10倍,所以每年都要做全鏈路壓測。

1.資料生產

業務nginx日誌通過中介軟體,拉取到壓測平台所屬的hive表中,固化。

然後,再通過平台配置,流量回放的形式,錄製線上流量。具體的是通過配置,要查詢hive庫中對應url的歷史請求資料,並將處理的流量彙總成詞表檔案,上傳給s3。

2.資料準備

剛從ng獲取的日誌不能直接使用,從ng獲取日誌到s3詞表之間,需要給流量進行染色,過濾和取樣。

染色:因為這些是線上真實流量,在壓測時,不被識別成壓測流量,通過染色,也就是加壓測標示,來標註流量。

過濾:取樣:

3.資料改造

為什麼要做資料改造?

場景一(資料替換):某些請求是實時的,帶時間戳的,過期的請求就不處理了,而壓測錄製的都是過期的流量,那麼怎麼辦呢?就要個流量重新加上合適的時間戳,讓請求生效。

場景二(資料偏移):比如滴滴有打車訂單壓測,壓測時,需要將使用者id做偏移,讓壓測製造的測試使用者不要和線上使用者撞號。另外,如果不偏移,並且如果寫介面因為誤操作寫入了真實庫中,全鏈路壓測將會直接影響線上使用者打車。

場景三(資料重組):比如個人當前的業務部,是thrift原生壓測,從線上摘下來的資料,並不能直接使用,一些欄位要拼接,去除,替代等。

這個資料改造的過程,也可以稱之為資料清洗,其目的都是為了使得壓測流量真實,安全。

4.壓測環境隔離之資料隔離

為什麼做資料隔離?因為不能影響線上使用者,不能汙染線上資料

在阿里還沒有提出影子表概念的時候,做壓測時,為了保證不影響到線上,會將現有的庫表複製乙份,壓測時用。只是這樣做的弊端是,資料庫效能是壓測不到了,包括鏈結池,記憶體區壓不到,這樣做完全為了資料隔離,造成壓測資料庫獨享了鏈結池和資源,無法壓測出資料庫的極限,和資料庫對效能是否有影響。

影子表的概念其實就是,有乙個壓測標示,帶上這個壓測標示後,資料庫的連線還是同乙個鏈結池,記憶體也是同乙個記憶體區,只是表庫中的磁碟是隔離的,在整個資料隔離區中,kv,mq 都可以走到資料節點,然後單獨的將壓測標籤資料儲存下來,區分業務資料,其他資源和線上共享,保正所有的資料節點都能壓測到。

簡單點說個結論,使用影子表,在全鏈路壓測中,既保證了資料隔離,也保證了可以壓到資料庫效能。

5.壓測環境隔離之服務隔離

如何做服務隔離?mt的服務隔離是(1)基於dayu平台的自動建站能力,其中,自動建站=幫助使用者批量(申請機器+部署服務)(2)基於分布式的trace透傳。

為什麼要基於分布式trace透傳?所有的壓測標示的透傳必須基於分布式鏈路追蹤。 比如某些服務沒有使用分布式會話跟蹤系統,那麼走到該服務的時候,節點就會中斷掉,後面變成正常的線上請求,因為壓測導致下游變成真實的流量,最後給線上造成很大的壓力。

6.壓測監控

壓測過程中需要進行服務監控,觀察服務表現狀態。以前只能很粗略的給出整體服務的評分,具體內部哪個節點有什麼問題,都是不清楚的,這個打分又是怎麼來的,也是不給說清楚的。

之後細化到每個服務的打分都給出來,之後又細化到哪個介面的效能瓶頸都給出來。這樣從服務,機器,再到資料節點進行監控,問題清清楚楚,資料明明白白,有瓶頸的地方該擴容擴容,改治理治理。

7.壓測架構體

根據調研,可以看出的是阿里、美團、滴滴等做的全鏈路壓測的平台技術都有統一的路數,那就拿美團來說一說吧。

針對不同的服務,需要有不同的壓測資料。

型別業務

http 流量

比如有些服務是http服務,有些服務是沒有http服務的

4.壓測資料隔離

5.壓測監控

6.壓測報告

7.整體架構

Ngrinder壓測平台搭建

一 架構圖 controller和agent通常放在壓力機上,也可以放在不同的機器上 二 啟動ngrinder controller 啟動controller,選擇中文,輸入admin admin,訪問ngrinder 三 啟動agent 1 將ngrinder agent 3.4.1 localh...

壓測和防止壓測方案

壓測 防止壓測方案 1.壓測 1 壓測工具 ab 2 壓測請求方式 get 3 壓測網域名稱 url 4 壓測方案 10萬請求,500併發 5 壓測指令碼 ab n 100000 c 500 url 6 展示壓測結果 從上面分析,10萬請求錯誤有 96881 次請求錯誤,基本上也就是很大的問題了 7...

壓測 mysql關閉連線 MySQL 壓測

mysqlslap iterations 100 create schema test query query.sql number of queries 20000 delimiter concurrency 100 3.2.2 網路引數問題 問題描述 使用mysqlslap 壓測某個語句,當併發...