1)單服務流量激增時擴容
2)調用鏈條變長,調用關係更加複雜
3)微服務拆分致使故障點增多
html
1)單服務變動性能影響如何評估?
2)性能瓶頸在各微服務間漂移,如何作好性能測試?
3)應對突發流量需求,擴容可否解決問題,如何擴容?
4)服務實例數量衆多,如何收集信息,快速定位性能問題?前端
華爲雲微服務性能保障解決方案介紹
redis
可人工介入,未運行時的mesher和侵入式框架提供配置下發sql
即侵入式框架與非侵入式mesher數據庫
1)Mesher的性能損耗(1ms)
2)單服務的接口性能
3)全鏈路調用性能
4)服務伸縮能力
後端
開展分層驗證,掌握服務的能力基線
1)單服務接口測試
驗證單服務的各個接口能力基線以及組合接口的能力基線
2)全鏈路測試
驗證全鏈路場景以及多鏈路組合場景的性能,優化鏈路中性能不足的服務
3)伸縮能力驗證
驗證單服務的水平擴容能力,驗證既定模型下的多鏈路組合場景的資源模型
緩存
性能測試服務化,提高驗證體驗
關鍵設計1:模塊化管理,事務靈活組合與複用
抽象性能測試所需的元素並模塊化,實現靈活複用和配置修改性能優化
關鍵設計2:可擴展的高性能執行集羣
服務器
1)制定測試目標,要求測試指標結果達到用戶預期目標。
2)指標數據通常包括併發用戶數、Response Time、TPS、經過率等。
3)系統的吞吐量要和響應時間關聯(SLA),如至少90%以上的請求在正常合理響應時間內。
網絡
性能是一個逐步提高的過程,測試過程當中須要找到擴容的模型,從不足50的TPS提高至萬級。
如何從測試工具側快速分析被測對象可能存在的問題
1)擴容,鏈路中的某一應用可能出現cpu使用率較高或者鏈接池資源不夠用(rpc、jdbc、redis鏈接池等)但自己對於拿到鏈接的請求處理又很快,這一類須要橫向擴展資源。
2)應用邏輯優化,好比存在慢sql、 邏輯的不合理如調用db或者redis次數過多、沒有作讀寫分離形成寫庫壓力過大。
3)超時時間的合理設置,對於應用之間的rpc調用或者應用與其餘基礎組件之間的調用,均須要設置合理的超時時間,不然過長的等待將形成整個鏈路的故障。
4)緩存的應用,請求儘量從前端返回,而不是每個都要讓後端應用處理後再返回,減輕後端應用及數據庫壓力,提升系統吞吐能力。
5)限流,對於超出承載能力的QPS或併發,能夠進行攔截並直接返回提示頁面。
降級,對於非核心鏈路上的應用,容許故障關閉而不影響核心鏈路
6)擴容和優化也是有限度的,在評估容量內,保障核心交易鏈路正常是重中之重,對於非核心功能模塊考慮降級場景
一個典型的互聯網平臺:突發事件高流量突發,如瞬間由百級用戶增加到萬級
性能測試工具:雲性能測試服務
對於網絡架構複雜的應用,能夠拆分壓力的入口點,進行分段驗證,屏蔽對應網元帶來的性能影響,如分別從最外端的CDN入口(1)、中間的ELB(2)、業務層(3)分別作測試,驗證複雜網絡架構狀況下,各網元的瓶頸和影響
1)應用發現與依賴關係:非侵入採集應用KPI數據,並經過服務間接口自動生成依賴關係,展示應用拓撲。
2)應用KPI匯聚:微服務實例匯聚到應用(數字表示XX個實例),KPI數據自動匯聚到應用。
3)調用鏈跟蹤:下鑽獲取應用調用鏈,定位到具體出錯方法