您可以查看運行中作業的效能,包括Job Manager與運行Task Managers的CPU、記憶體和線程的使用方式,這可以協助您定位代碼問題,例如作業代碼是否存在問題、個別類是否初始化比較慢、個別類是否佔用資源比較多等問題。本文為您介紹如何查看作業Job Manager和運行Task Managers的效能。
前提條件
其他阿里雲帳號或RAM使用者共同使用Flink工作空間時,需要為阿里雲帳號或RAM使用者授權,以進行查看作業效能等相關操作,詳情請參見專案空間授權。
使用限制
僅Flink計算引擎VVR 4.0.11及以上版本支援查看作業效能。
僅支援查看運行作業的效能,歷史作業不支援查看效能。
分析工具使用方式
火焰圖
火焰圖通常是基於採樣資料產生,可能無法完全反映程式的全部執行情況。使用火焰圖識別瓶頸時,應結合其他效能分析工具和實際的業務情境進行綜合判斷。通常您可以查看以下方面:
CPU耗時:通常頂層佔據寬度比較大的函數消耗的CPU比較多,表示該類函數可能存在效能問題。
記憶體配置:查看不同類別分配的記憶體情況。
鎖耗時:查看鎖競爭、死結導致的效能下降問題。
ITimer:在相同時間間隔下,查看每個間隔內所有線程之間CPU的消耗情況。
通過火焰圖識別瓶頸的整體思路如下:
理解火焰圖的結構
火焰圖的每一層代表調用棧的一個層級。最底層是應用程式的進入點,而更高層則表示更深層次的函數調用。
關注火焰的寬度與出現頻率
在火焰圖中,每個“火焰”的寬度代表了函數在採樣期間的執行時間佔比,更寬的火焰表示該函數佔用了更多的CPU時間,這通常代表了潛在的效能瓶頸。有些函數的火焰可能不是最寬的,但如果它們頻繁出現在火焰圖中,這意味著它們被調用了很多次,累積起來也是一個效能問題。
分析火焰的位置
火焰圖的垂直位置可以告訴您瓶頸發生在調用棧的哪個層級。位於底部的寬火焰通常表示程式的早期階段或主要邏輯部分存在問題,而位於頂部的寬火焰可能指向具體的處理函數或庫函數。
結合實際程式碼分析
一旦您通過火焰圖識別出了潛在的瓶頸,應該結合實際的代碼進行分析,查看這些熱點函數的實現,尋找可以最佳化的地方,比如減少迴圈次數、最佳化資料結構、減少同步操作等。
進行效能測試
最佳化代碼後,可以進行效能測試驗證最佳化效果。並比較最佳化前後火焰圖的變化,確保效能瓶頸得到了實質性的改善。
如果火焰圖中部分顯示UnKnown,說明您使用了native方法。因此沒有Java方法的名字是符合預期的,詳情請參見Unknown。
線程動態
進入效能查看頁簽。
Job Manager效能
在作業日誌頁簽,單擊Job Manager頁簽下的效能查看。
運行Task Managers效能
在作業日誌頁簽,單擊運行Task Managers頁簽下的Path, ID,單擊效能查看。
在線程動態頁簽,單擊目標運算元操作列的採樣,採樣一段時間後觀察其線程棧。例如下圖為Gemini State訪問的線程棧。
Thread Dump
在作業日誌頁簽,單擊運行Task Managers頁簽下的Path, ID。
在Thread Dump頁面,按運算元名稱搜尋,觀察線程棧是否在訪問State(線程棧持續在Gemini或RocksDB的訪問鏈路上)。
您可以在狀態總覽頁簽查看目標運算元名稱。
相關文檔
作業智能診斷服務能夠幫您監控作業健康情況,全面保障您的業務穩定可靠運行,詳情請參見作業智能診斷。
通過作業配置和Flink SQL最佳化兩方面提升Flink SQL作業效能,詳情請參見高效能Flink SQL最佳化技巧。