flink反壓的監控


  反壓在流式系統中是一種非常重要的機制,主要作用是當系統中下游算子的處理速度下降,導致數據處理速率低於數據接入的速率時,通過反向背壓的方式讓數據接入的速率下降,從而避免大量數據積壓在flink系統中,最后系統無法正常運行。flink具有天然的反壓機制,不需要通過額外的配置就能夠完成反壓處理。

  當在flinkUI中切換到Backpressure頁簽時,flink才會對整個job觸發反壓數據的采集,反壓過程對系統有一定的影響,主要因為jvm進程采樣成本較高。flink通過在TaskManager中采樣LocalBufferPool內存塊上的每個Task的stackTrace實現。默認情況下,TaskManager會觸發一百次采樣,然后將采樣的結果匯報給JobManager,最終通過JobManager進行匯總計算,得出反壓比例並在頁面中展示,反壓比例等於反壓出現次數/采樣次數。

  通過在頁面中點擊Back Pressure頁簽觸發反壓檢測,整個采樣過程大約會持續5s,每次采樣的間隔為50ms,持續100次。同時,為了避免讓TaskManager過多地采樣StackTrace,即使頁面被刷新,也要等待60s后才能觸發下一次Sampling過程。  

  通過觸發jvm進程采樣的方式獲取到反壓監控數據,同時flink會將反壓狀態分為三個級別,分別為OK、LOW、HIGH級別,其中OK對應的反壓比例為大於0小於10%,LOW對應的反壓比例為10%-50%,HIGH對應的反壓比例大於50%小於100%。

  如果對task進行抽樣顯示,所有的subtasks狀態均顯示OK,表示未發生大規模的數據堵塞,系統整體運行正常,不需要做任何調整。

  如果所有的subtasks狀態均顯示HIGH,表示系統觸發了比較多的反壓,需要適當的增加subtask並發度或者降低數據生產速度,否則經過長時間的運行后,系統中處理的數據將出現比較嚴重的超時現象。

  針對反壓的優化,用戶可以調整以下參數:

  • web.backpressure.cleanup-interval:當啟動反壓數據采集后,需要等待頁面並獲取反壓數據的時間長度,默認60s
  • web.backpressure.delay-between-samples:Stack Trace抽樣到確認反壓狀態之間的時延,默認為50ms
  • web.backpressure.num-sample:設定Stack Trace抽樣數以確定反壓狀態,默認為100


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM