蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点
陳顯銘(山丘)
讀完需要
6
分鐘速讀僅需 2 分鐘
陳顯銘,花名山丘,就職于螞蟻集團,對分布式應用架構、服務化、性能優化等有深入的理解。參與支付寶支付鏈路核心系統,設計、調優應用系統關鍵能力, 高效、穩定保障系統平穩支撐大促。曾歷經多年雙十一大促,對于性能調優、構建高可用系統有豐富的實戰經驗。熟悉常見的性能優化模式,比如應用結構優化、鏈路級、單系統優化等多種優化方式。對于常見的壓測模式,如單機壓測、鏈路級壓測都有深厚的積累。作為一名性能專家,以追求性能最大化為己任,與之相伴的自然是高技巧、高難度的代碼優化。這也是一名性能專家的畢生追求。
通過性能優化的常見模式及趨勢,我們大概知道了性能優化的一些招式,但是發現有性能問題的常見模式還是壓測。本章列舉常見的壓測模型并對其進行闡述分析。
1
? ?
壓測模型抽象
壓測模型可以被抽象為圖 18.1 的模型。該模型主要包含如下三大部分。
壓測任務管理:負責對壓測場景、目標、策略進行管理。比如對支付業務場景進行壓測時需要持續 30 分鐘,且需要使 QPS 的壓力值達到 1WQPS 等。
壓測任務執行:通過單機、分布式等壓力機執行壓測策略層下的壓測任務,并在壓測系統中輸出相關監控指標。
壓測結果分析:壓測機會產出相關的系統性能日志,之后通過監控系統、工具體系進行數據分析,分析壓測情況,優化壓測策略,找到系統瓶頸。
圖 18.1
1.1
? ?
壓測環境準備
環境準備是壓測的基礎,下面是需要準備的主要軟件和硬件環境的內容。
壓力機資源。
被壓測系統。
依賴資源(壓測數據、第三方依賴)。
1.2
? ?
壓測執行閉環
壓測是一個不斷調整壓測參數、進行壓測、找到問題、解決問題、再次驗證等一系列
過程的組合,并不能一次性就可以做到完整、極致。整個的壓測過程是一個閉環過程,這個過程可以拆分為如下的幾個方面:
使用壓力機進行壓測。
分析程序收集壓測數據(RT、QPS/TPS、成功率、錯誤、內存、I/O 等)。
分析壓測報告。
確定優化計劃。
反饋到壓測系統或者調整壓測策略。
2
? ?
線下壓測模型
線下壓測模型最多,也是最容易實現的。對于有技術實力的公司,開發環境和壓測環境是隔離的。圖 18.2 所示的是分布式系統結構的線下壓測模型拓撲圖,實線是同步調用,虛線是消息類調用。
圖 18.2
線下壓測模型的優缺點如下。
2.1
? ?
優點
可以實現快速壓測。
壓測場景可以自由自定。
可以進行穩定性測試或者鏈路性能回歸。
2.2
? ?
缺點
仿真度不高。
環境部署復雜。
多個壓測任務一般不能并行。
存在環境問題:
依賴系統可能缺失。
測試環境和線上環境的數據量不一樣。
服務化后,線上各應用是集群部署,比如 A 可能是 1000 臺,B 可能是 100 臺, 是 10:1 的比例關系,但是線下的比例一般是 1:1,這個比例是失真的。
3
? ?
線上引流壓測模型
線上引流壓測模型是使用比較多的高仿真壓測,其模型結構如圖 18.3 所示。該模型的優缺點如下。
圖 18.3
3.1
? ?
優點
真實的業務場景測試。
可以按需縮容。
可以快速回退。
3.2
? ?
缺點
無法對鏈路節點進行壓測(與全鏈路壓測相比,該壓測方式存在著數據庫流量可能不夠、網絡節點不全等問題)。
很難進行超出業務流量的壓測。
很難評估鏈路性能。
線上引流壓測是不錯的壓測模式,其使用的關鍵技術如下。
流量的控制能力??梢园葱枨袚Q流量,Web 層(諸如使用 Ngnix)以及服務和服務調用之間也需要按需切換。如果想要對流量有更強的控制,則建議在需要控制的各層加入代理層,在代理層上可以實現路由算法,通過調整路由算法達到控制的目的, 比如可以擴展 Ngnix 的模塊。如果使用的是 Dubbo,則可以擴展服務調用的尋址邏輯。
服務監控能力。如何在線上進行壓測并快速識別壓測情況?如果壓測在單臺機器上進行,登錄一臺機器即可確認情況,但是如果有多臺機器怎么辦?必須依靠自動化監控核心指標。
服務化后的系統使用普通的線上壓測模式很難發現鏈路上的問題,所以就需要使用下面要介紹的線上全鏈路壓測模型。
4
? ?
線上全鏈路壓測模型
目前,在阿里巴巴已經實現了線上全鏈路壓測模型的落地,如圖 18.4 所示,用于對大促等爆發流量進行模擬。使用完全真實的線上環境進行高仿真的線上壓測,可以按照線上真實的容量部署情況進行鏈路壓測。
圖 18.4
線上全鏈路壓測模型的優缺點如下。
4.1
? ?
優點
高仿真。
可以構造比日常容量大得多的請求量。
4.2
? ?
缺點
該模型的實施成本很高,一般的公司可以不這么做,用前面的方式已經足夠了。
5
? ?
總結
本章介紹的幾種壓測模型是現在主要使用的模型,可能會有一些變體模型,但不會相差太大。壓測時還有些需要注意的點,諸如要小心壓力機的瓶頸。現在常用的工具有 JMeter 等,在此不做詳解。
- EOF -想要加入中生代架構群的小伙伴,請添加群合伙人大白的微信 申請備注(姓名+公司+技術方向)才能通過哦!往期推薦
京東平臺研發朱志國:領域驅動設計(DDD)理論啟示
2020-10-27
架構專家高磊:緩存為王——無線緩存架構優化
2020-10-22
三湘銀行中臺總助黎慧劍:銀行業務中臺建設實戰
2020-10-21
阿里文娛技術專家戰獒: 領域驅動設計詳解之What, Why, How?
2020-10-20
螞蟻集團技術專家山丘:性能優化的常見模式及趨勢
2020-10-18
阿里專家馬飛翔:一文讀懂架構整潔之道
2020-10-16
美團技術專家云鵬:寫給工程師的十條精進原則!
2020-10-15
架構專家李偉山:電商系統之訂單系統
2020-10-14
DDD專家張逸:構建領域驅動設計知識體系
2020-10-13
京東架構師閆文廣:訂單系統高可用架構及演變過程
2020-10-12
前阿里高級技術專家杜仲:再談中年危機和應對策略
2020-10-10
阿里高級技術專家張建飛:面對復雜業務,if-else coder 如何升級?
2020-09-30
阿里專家常昊:新人如何上手項目管理?
2020-09-29
快狗打車CTO沈劍:如何利用計劃管理提升團隊效率和產能
2020-09-27
阿里技術專家麒燁:修煉測試基本功
2020-09-16
? ?END ? ?? #架構師必備#點分享點點贊點在看總結
以上是生活随笔為你收集整理的蚂蚁集团技术专家山丘:性能优化常见压测模型及优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强连通Tarjan NYOJ 120 校
- 下一篇: 高并发来袭,面向Google编程的程序员