Liu created FLINK-10949:
---------------------------
Summary: When use flink-1.6.2's intervalJoin funtion, the thread is stucked in rockdb's seek for too long time
Key: FLINK-10949
URL:
https://issues.apache.org/jira/browse/FLINK-10949 Project: Flink
Issue Type: Bug
Components: State Backends, Checkpointing
Affects Versions: 1.6.2
Environment: flink1.6.2, linux
Reporter: Liu
0down vote [favorite|
https://stackoverflow.com/questions/53393775/when-use-flink-1-6-2s-intervaljoin-funtion-the-thread-is-stucked-in-seek-for-t]
I am using IntervalJoin function to join two streams within 10 minutes. As below:
{{labelStream.intervalJoin(adLogStream)}}
{{ .between(Time.milliseconds(0), Time.milliseconds(600000)) }}
{{ .process(new processFunction())}}
{{ .sink(kafkaProducer)}}
labelStream and adLogStream are proto-buf class that are keyed by Long id.
Our two input-streams are huge. After running about 30minutes, the output to kafka go down slowly, like this:
!
https://i.stack.imgur.com/UW4V1.png!When data output begins going down, I use jstack and pstack sevaral times to get these:
!
https://i.stack.imgur.com/uxOZn.png!!
https://i.stack.imgur.com/JTyIC.png!It seems the program is stucked in rockdb's seek. And I find that some rockdb's srt file are accessed slowly by iteration. [!
https://i.stack.imgur.com/Avdyo.png!|
https://i.stack.imgur.com/Avdyo.png]
I have tried several ways:
{{1)Reduce the input amount to half. This works well.}}
{{ 2)Replace labelStream and adLogStream with simple Strings. This way, data amount will not change. This works well.}}
{{ 3)Use PredefinedOptions like SPINNING_DISK_OPTIMIZED and SPINNING_DISK_OPTIMIZED_HIGH_MEM. This still fails.}}
{{ 4)Use new versions of rocksdbjni. This still fails.}}
{{Can anyone give me some suggestions? Thank you very much.}}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)