在性能測試領域,近幾年全鏈路壓測能夠說是愈來愈火熱,但據我瞭解,真正玩得轉的,就那麼幾家知名的大廠或者有大廠背景的公司。html
緣由無非這幾點:愈加複雜的業務和龐大的數據量倒逼技術,以及技術建設到了必定程度須要創造更多的價值。以前的博客也介紹過,前端
而伴隨全鏈路壓測一路成長但不爲大多數測試童鞋所知的,還有全鏈路監控。這篇博客,簡單介紹下關於全鏈路監控的一些知識。。。數據庫
1、基礎知識服務器
一、調用鏈是全鏈路追蹤監控的核心概念。架構
二、定義:從請求源頭(前端頁面、移動端)到最後的底層服務(好比DB、Redis)的全部中間調用環節。異步
三、常見全鏈路監控工具對比分佈式
除了上述幾種全鏈路監控工具,還有skywalking等,但不一樣工具各自的優缺點不一樣,還須要根據技術團隊的技術特色和需求合理選型。工具
2、全鏈路監控特質性能
一、低侵入性
監控系統應儘量減小對業務系統的侵入,保持對使用方的透明性,減小開發人員的負擔,下降接入門檻和難度。
二、低性能影響
因爲全鏈路監控系統須要對各類應用中間件進行日誌數據採集,大多都須要在業務系統內進行「埋點」或放置agent,通常都是在覈心業務流程。
所以應儘量下降對業務系統形成的性能影響,通常來講,對CPU的耗用低於2%能夠做爲一個參考閾值。
三、靈活全面的接入策略
爲了儘量下降接入成本,應該提供靈活的監控配置策略,讓業務方決定是否接入,以及收集數據的範圍和粒度,並提供對應的技術方案保障監控策略生效。
四、時效性
實時有效的監控數據展現功能,幫助相關人員理解系統行爲,爲流程、架構、代碼優化,以及擴容縮容、服務限流降級提供正確客觀的數據參考。
3、注意事項
一、異步調用
經過java字節碼加強方式植入加強邏輯, 經過對JDK線程(Thread)對象進行加強完成。
二、提升日誌輸出的技術方案
在應用服務器開闢專門的內存區域,虛擬爲虛擬磁盤,日誌輸出採樣經過異步方式寫入磁盤,當日志量過大(設定閾值)時丟棄日誌,並Count丟棄的日誌。
步驟:達到採樣條件,產生日誌並記錄;批量日誌數知足條件,寫入I/O緩衝區(Buffer);等待緩衝區滿,寫入存儲塊設備。
三、採樣率&TP數
採樣率:每N次調用採集一次數據,極大下降採集的日誌數量;
TP數:記錄每次調用的TP值,便於技術TP50%、TP99%的指標;
PS:關於TP50/TP99,可參考這裏:指標數據TP5五、TP90、TP9九、TP999
4、擴展知識
基於全鏈路監控的思想出現了不少新的知識,好比說:APM。
一、定義:APM(Application Performance Management)對應用程序性能和可用性的監控管理。
二、說明:狹義上的APM:單指應用程序的監控,如應用的各接口性能和錯誤監控,分佈式調用鏈路跟蹤,以及其餘各種用於診斷(內存,線程等)的監控信息等。
廣義上的APM:除了應用層的監控意外,還包括手機App端監控,頁面端監控,容器、服務器監控,以及其餘平臺組件如中間件容器,數據庫等層面的監控。
以上內容只是我的總結記錄的筆記,僅供參考。。。