flink內存管理
JVM 存在的幾個問題:
- Java 對象存儲密度低。一個只包含 boolean 屬性的對象占用了16個字節內存:對象頭占了8個,boolean 屬性占了1個,對齊填充占了7個。而實際上只需要一個bit(1/8字節)就夠了。
- Full GC 會極大地影響性能,尤其是為了處理更大數據而開了很大內存空間的JVM來說,GC 會達到秒級甚至分鐘級。
- OOM 問題影響穩定性。OutOfMemoryError是分布式計算框架經常會遇到的問題,當JVM中所有對象大小超過分配給JVM的內存大小時,就會發生OutOfMemoryError錯誤,導致JVM崩潰,分布式框架的健壯性和性能都會受到影響。
flink內存管理針對實時場景做了哪些優化
積極的堆外內存管理,因為流處理注重低延遲,為每一條要處理的數據在堆內存上創建對象會觸發頻繁的gc,導致處理停滯
- flink在堆外開辟network buffer(專門存放緩沖數據)
- 開辟managed memory,用于排序,緩存中間值
怎么定位背壓
flink拓撲圖,Flink的下游算子無法及時處理上游的消息時會出現反壓的提示。反壓提示一般有OK,LOW,HIGH三種狀態。某個算子的BackPressure指標如果是HIGH,說明后面的算子存在性能問題。在任務性能調優時,對于串在一