問題:
flinkcdc+flinksql做實時讀取sls日志和實時統計業務指標,今天發現程序背壓了,業務延遲了6個小時。
解決辦法:
1、資源優化
作業并發大時:在作業的高級配置的資源配置中,增加JobManager的資源,提高CPU和內存的大小,例如:Job Manager cpu設置為4。Job Manager Memory設置為8 GiB。
作業拓撲較復雜時,在作業的高級配置的資源配置中,增加TaskManager的資源,提高CPU和內存的大小,例如:Task Manager CPUs設置為4。Task Manager Memory設置為8 GiB。
2、sql優化
開啟MiniBatch(提升吞吐):
table.exec.mini-batch.enabled: true
table.exec.mini-batch.allow-latency: 5s
MiniBatch是緩存一定的數據后再觸發處理,以減少對State的訪問,從而提升吞吐并減少數據的輸出量。MiniBatch主要基于事件消息來觸發微批處理,事件消息會按您指定的時間間隔在源頭插入。
復盤
下面是實時延遲時的截圖:
下面是實時追上數據時的截圖:
bingo:我開啟了MiniBatch配置,以5秒微批的方式做實時處理,程序性能直接飛速提升,6小時的延遲十幾分鐘就追上了。性能杠杠的!