
3/8/2022
What this post added
This post provides 7 tips for optimizing large stateful Apache Flink applications deployed in Kubernetes on GKE, leveraging RocksDB state backend and GCS for checkpoints. It details the use of profiling tools like Async-profiler, VisualVM, jemalloc+jeprof, and Eclipse MAT for debugging. It emphasizes avoiding Kryo serialization by fixing issues with Scala's BigDecimal and ADTs, leading to a 20% throughput increase. The post also discusses tuning Flink configurations based on workload (backfill vs. steady state), including input source partitions, back pressure, sink throttling, network buffers, and checkpointing strategies. Finally, it addresses heap profiling for Flink's File Sink, particularly with GCS, and how to resolve memory issues by analyzing heap dumps.