I would like to understand how window affect performance in Flink job, I am running a flink job consist of operator as below:
Job Parallelism (4,8,16) : [auto-gen source] --> [ Map1 ]--> [ Tumbling Window (10s)]--> [Map2]--> [Sink]
Flink windowed performance eps 4p,8p,16p
The job above performance capped at around 50k+- per second, regardless how I scale the cluster form 4 -16 parallelism.
When the job window was removed , the job can achieve 200k per second.
Job Parallelism(4-8): [auto-gen source] --> [ Map1 ] --> [Map2]--> [Sink]
Flink performance no window 4p, 8p
I have remove the Window's logic to eliminate application logic that bottleneck the performance, but seem like the window still caused my whole stream performance to goes down, even though that window just a passthrough function.
This screenshot shows that the performance for job without window, and the job with empty window enabled.
Empty window shows spike but operator slowed down
The stream was capped and couldn't further scaled . Anyway to improve the performance for such scenario?
Note: The job does not has external service dependencies and checkpoint turned off.