《A3--劉鵬威--華為云交易平臺性能看護10倍質效提升之路.pdf》由會員分享,可在線閱讀,更多相關《A3--劉鵬威--華為云交易平臺性能看護10倍質效提升之路.pdf(36頁珍藏版)》請在三個皮匠報告上搜索。
1、華為云交易平臺性能看護10倍質效提升之路劉鵬威華為云高級測試工程師劉鵬威從事性能測試與調優工作5年,對云化微服務框架下的性能測試架構有深刻的理解。主導構建了華為云交易平臺的devops全流程性能看護框架。參與保障歷次華為云大促。目前從事性能測試智能化相關工作。華為云高級測試工程師嘉賓照片目錄CONTENTS01 交易平臺性能測試架構實踐的背景介紹02 指標&彈性測試自動化實踐03 SQL性能質量自動化看護實踐04 線上監控測試線上監控測試05 01議題背景背景介紹挑戰:1、被測系統數百微服務、萬級接口、十萬級SQL,實驗室覆蓋率低2、微服務架構下場景調用鏈復雜,測試過程繁瑣,測試周期長,人員投
2、入大,匹配不了版本發布要求3、業務迭代快,性能波動頻繁,日常測試中定位性能波動的根因困難4、線上性能問題影響面廣,服務要求性能質量高5、業務模型復雜,實驗室測不準解決方案u SQL性能質量自動分析u 核心場景性能自動化看護u 性能瓶頸自動根因定位u 線上監控測試,發現性能風險,線下測試閉環風險u 線上性能模型自動挖掘,糾正實驗室模型02交易平臺性交易平臺性能測試架構能測試架構交易平臺云化性能測試架構測試質量評估性能瓶頸自動定界線上模型發掘在線性能風險分析性能E2E環境:POD彈性伸縮+資源監控+JVM+APM基礎環境技術&實踐Gamma類生產測試alpha組件測試Product線上測試壓力彈性
3、擴容測試自動化性能問題快速感知動態SQL自動測試大促保障壓測性能風險識別用例自動執行SQL自動測試SQL質量評估彈性擴容評估大促保障評估核心場景性能基線評估接口/場景性能基線測試自動化數據量X倍測試性能模型挖掘Beta集成測試靜態SQL掃描測試評估03指標指標&彈性彈性測試自動化測試自動化指標指標&彈性測試彈性測試自動化實踐自動化實踐u 場景性能自動化看護u 性能彈性擴容測試自動化u 性能瓶頸自動根因定位u 性能波動全息數據對比分析主要技術能力:性能指標基線自動化測試風險場景選?。簶I務核心場景現網高頻高耗場景需求高頻變化場景執行頻率:微服務獨立發布,微服務關聯用例執行版本集中發布,全量用例執行
4、性能下降評判條件:TPS、時延低于基線值GC次數惡化資源使用率增加目的:看護風險場景性能不下降彈性測試自動化彈性擴縮容能力是云原生服務的基本要求,測試和日??醋o過程中遇到微服務多、交互復雜、測試驗證復雜度高,測試成本高的困難。日志調用鏈Mem慢SQL壓力機分析結果數據庫Flink分析工作流CPU中間件數據源kafka子系統服務瓶頸分析性能全息監控彈性壓測控制性能數據全息比對分析JVM彈性擴容測試自動化總體架構性能瓶頸自動根因定位問題建模:問題建模:目標函數:目標函數:以TPS為目標函數,TPS陡降、時延陡增點即為過載壓力點搜索步長:搜索步長:以TPS增加梯度為步長,TPS增長快的區域,步長大,
5、利于快速爬坡過過壓力點斷定算法:壓力點斷定算法:1、初始化狀態為1并發,增加到X并發壓力作為首次步長2、判斷兩點的TPS比率rat,如果比率大于1,增加壓力*rat,重復第二步,如果比率小于1,跳轉到第三步3、如果比率小于1,停止爬坡,輸出結果典型系統壓力性能變化曲線達到性能瓶頸時如何自動的感知實際測試中,經常遇到抖動突變點(GC、網絡抖動、其他事件影響等),這樣會導致算法進入鞍點,不能有效找到過載點鞍點,到達這里可能搜索停止解決方案:解決方案:1、采用中值濾波來進行預處理,去除脈沖噪聲2、在某個并發壓力點上壓測一段時間,取其平均TPS,可有效去除其噪點。兩種方案結合,可使算法的魯棒性大幅提升
6、性能瓶頸自動根因定位SUT資源JVM采集調用鏈采集結果存儲微服務分析計算消息隊列DCSRDSAPM自動定界定位架構實現方案:實現方案:1、基于微服務視角的信息聚合聚合微服務的CPU、MEM、FGC、處理失敗率及其關聯的DB、緩存監控等信息研判微服務健康度。微服務健康級別分為嚴重、告警、正常。2、基于微服務自身時延的瓶頸定界 依據調用鏈構建接口調用樹。計算每個樹節點的自身時延。匯聚相同調用鏈相同節點的自身時延數據,計算所有調用的平均自身時延。系統達到過壓后,時延最長的子鏈就是瓶頸點。鏈路耗時分段計算微服務A微服務B微服務D微服務C微服務A微服務微服務A微服務微服務B微服務微服務C微服務微服務D微
7、服務D12435某接口調用鏈.RT(A_1)=RT(Total)RT(AB)RT(B_1)=RT(AB)RT(BD)-RT(BC)RT(A_2)=RT(DA)RT(A_1)=X1RT(B_1)=Y1RT(A_2)=Z1.AVGRT(A_1)=AVG(x)AVGRT(B_1)=AVG(y)AVGRT(A_2)=AVG(z)RT(A_1)=XnRT(B_1)=YnRT(A_2)=Zn.某秒內第一次調用計算結果最后一次調用計算結果聚合該秒內的各段平均時延自動瓶頸定界步驟:自動瓶頸定界步驟:1、依據調用鏈生成樹形調用圖,遍歷各節點計算自身時延2、按秒匯聚相同調用鏈的各子時延,計算平均子時延3、形成子時
8、延壓力增加時序圖,明顯增長的子時延即為瓶頸點。如圖:子鏈A增長率高,處理子鏈A的微服務既是瓶頸。子鏈耗時時序圖瓶頸定位子鏈耗時性能波動對比分析使用使用場景場景:版本更新后性能出現下降,需要定位出下降的微服務及其處理流程 時延惡化明顯,快速定位至微服務和處理階段瓶頸點,識別瓶頸擴容擴容后性能無提升,停止測試時延抖動,噪點數據測試報告自動生成:1、每步擴容發現的瓶頸微服務2、每次擴容后的最大性能值3、最終測試結果和擴容不再提升性能的微服務瓶頸點,識別瓶頸擴容彈性擴容自動測試過程瓶頸點,識別瓶頸擴容04SQL性能質量自性能質量自動化看護動化看護SQL性能自動測試架構測試環境SQL線上慢SQL動態執行
9、計劃測試靜態規范檢查性能風險SQLSQL自動測試架構自動測試架構開發態靜態SQL交易平臺作為數據庫強依賴性能產品,SQL性能決定系統整體性能SQL執行計劃動態測試測試微服務字節碼增強com.mysqlDBSelect*from Explain Select*from 執行計劃分析平臺執行計劃上報執行計劃規則檢查識別性能風險SQL線上微服務字節碼增強com.mysql主庫Select*from 執行計劃分析平臺攔截SQL上報從庫實驗室獲取執行計劃線上獲取執行計劃業務閑時獲取執行計劃1、全表掃描2、分區表無分區字段3、使用Using File sort4、使用Using temporary5、索引
10、全掃描.SQL靜態檢查 SELECT*FROM t_order WHERE 1=1 AND userId=#userId AND concat(order,XXX)=#orderId AND name like CONCAT(%,#name)AND sourceOperation IN#item Group by substr(createTime,1,10)Mybatis的原始SQL依據規則的靜態檢查1、Where條件中字段有表達式concat(order,XXX)=#orderId2、Like條件左通配like CONCAT(%,#name)3、Select選取了全列SELECT*4、使用
11、了foreach拼接,可能list超大5、orderby 或groupby中使用表達式Group by substr(createTime,1,10).依據規則掃描的風險項05線上性能監控測線上性能監控測試試在線性能態勢感知 線上性能實時監控,性能問題快速感知u 接口性能監控u 服務性能監控u DB性能監控u 事件、任務類監控 性能風險感知,全面診斷系統,提前閉環風險u 接口時延惡化分析u 接口流控率分析u 服務惡化分析u 數據庫惡化分析 性能模型建模,提升測試精準度u 場景流量建模u 場景數據模型建模線上接口性能實時監控接口請求點陣圖,接口時延跳變告警告警觸發1、接口平均時延突變2、接口失敗
12、率增高3、接口壓力突變4、敏感客戶請求時延突變線上服務及數據庫性能實時監控告警觸發1、服務GC突增2、服務CPU突增3、服務內存突增4、服務IO/網絡突增5、DB連接池占比增高6、DB CPU/IO持續高7、慢SQL次數高接口性能惡化分析月度分析時延惡化的接口月度分析時延惡化的接口1、基于XGBoost監督學習算法,依據時延波形識別惡化2、分類為急劇惡化、一般惡化、未惡化突變型震蕩上升型緩慢上升型服務性能風險分析多維度發掘服務性能風險特定日志模式識別Cant get connection from XXXPoolRejected by ThreadPool池資源占用率連接池、線程池使用增長率微
13、服務資源使用情況CPU、JVM、GC增長率接口表現情況所屬接口的時延、壓力增長率句柄、鏈接增長率數據庫性能風險分析數據庫性能風險慢SQL數據庫慢SQL惡化表數據規模大表及數據增速資源使用情況持續高CPU/IO性能模型建模分析場景線上流量畫像,設定接口指標有理有據場景線上流量畫像,設定接口指標有理有據u 忙忙時平均壓力時平均壓力:接口timeout時間內調用量最大的一段所對應的TPS,代表系統受到的最大持續壓力,接口測試性能值要達到X倍u 忙時峰值壓力忙時峰值壓力:TP95的峰值壓力,代表平時經常所受到的峰值壓力,性能值不能低于此值u 峰值峰值壓力壓力:代表一段時間內系統受到的最大浪涌壓力,實驗
14、室浪涌測試設置值,測試浪涌下系統能穩定響應。線上數據模型提取,實驗室性能測試更準確線上數據模型提取,實驗室性能測試更準確1、線上依據業務分類來統計各模塊數據模型,校準實驗室測試模型2、模型維度依賴于影響性能的要素,先要提取模型要求,再依據要素提取線上統計數據總結本文介紹了華為云交易平臺的devops全程性能測試實踐DEVOPS全流程的性能自動化看護框架:alpha階段:SQL的動靜態掃描與檢查beta階段:微服務核心接口的性能看護自動化、彈性擴容測試自動化gamma階段:SQL動態性能質量評估ops階段:線上性能監控、性能風險挖掘、性能模型感知測試質效提升效果:性能指標及彈性測試自動化,實現了壓力自動調節、性能瓶頸自動定界、版本間惡化比對等能力,性能測試分析效能提升10倍。構建了時延惡化識別和多維度服務性能風險的風險感知能力,基于風險的測試更有效。線上場景性能流量和數據模型挖掘,性能指標定義和測試結果更加精準。感謝聆聽關注QECon公眾號