借助Java字節碼注入技術,許多基于Java的框架可以實現自動埋點,從而幫助您了解慢請求具體發生在哪兩個埋點之間。但這并不足以定位代碼層的問題。如需精確定位導致慢請求出現的代碼方法,您可以搭配使用SkyWalking的慢請求分析功能和鏈路追蹤。
前提條件
您已通過SkyWalking接入可觀測鏈路 OpenTelemetry 版,詳情請參見通過SkyWalking上報Java應用數據。
背景信息
SkyWalking采集慢請求數據的工作流程如圖所示。
僅SkyWalking 7.0及更高版本具備慢請求分析功能。
創建慢請求采集任務
登錄可觀測鏈路 OpenTelemetry 版控制臺,在左側導航欄單擊應用列表。
在應用列表頁面頂部選擇目標地域,然后單擊目標應用名稱。
在左側導航欄單擊慢請求分析,并單擊新建任務。
在新建任務對話框中輸入以下信息,并單擊確認。
參數
描述
是否必填
示例值
Span名稱
需監控的Span。
是
/api
監控持續時間
監控持續的時間。
否
5 min
Span耗時閾值
僅分析耗時超過該閾值的Span。單位為ms。
否
30 ms
監控間隔
采集監控數據的時間間隔。
否
20 ms
最大采樣數
被采集數據的Span最大數量。取值范圍為1~9。
否
5
創建任務完成后,可在任務列表中查看創建成功的任務。
定位導致慢請求出現的方法
以您新建任務的時間為起點,經過指定的監控持續時間后,耗時超過閾值的Span將顯示在Sampled Traces區域。請按照以下步驟在頁面右側的線程棧詳細信息定位導致慢請求出現的方法。
在慢請求分析頁面的任務列表區域單擊目標任務。
耗時超過閾值的Span將顯示在Sampled Traces區域。
在Sampled Traces區域單擊目標Span,并觀察頁面右側的線程棧區域。
以紅色字體顯示的方法名即為耗時超過所設置閾值的方法。您可以針對性地優化這些方法。
為什么監控持續時間結束后未采樣到任何線程棧?
如果監控持續時間結束后未采樣到任何線程棧,請按照以下步驟排查。
在慢請求分析頁面的任務列表區域單擊目標任務右側的查看任務詳情。
在任務詳情對話框中查看詳細信息。