Hi,
We are using Kafka streams DSL APIs for doing some counter aggregations
(running on OpenJDK 11.0.2). Our topology has some 400 sub topologies & we are
using 8 partitions in source topic. When we start pumping more load, we start
getting RockDBException stating "too many open files".
Here are the stack trace samples:
------------------------------------------------------------------------------------------
Caused by: org.rocksdb.RocksDBException: while open a file for lock:
PPPPPPPPPPP.1512000000/LOCK: Too many open files
at org.rocksdb.RocksDB.open(Native Method)
at org.rocksdb.RocksDB.open(RocksDB.java:235)
at
org.apache.kafka.streams.state.internals.RocksDBStore.openDB(RocksDBStore.java:156)
... 24 common frames omitted
Caused by: org.apache.kafka.streams.errors.ProcessorStateException: Error while
executing flush from store XXXXXXXXXXX.1512000000
at
org.apache.kafka.streams.state.internals.RocksDBStore.flushInternal(RocksDBStore.java:397)
at
org.apache.kafka.streams.state.internals.RocksDBStore.flush(RocksDBStore.java:388)
at
org.apache.kafka.streams.state.internals.Segments.flush(Segments.java:163)
at
org.apache.kafka.streams.state.internals.RocksDBSegmentedBytesStore.flush(RocksDBSegmentedBytesStore.java:178)
at
org.apache.kafka.streams.state.internals.WrappedStateStore$AbstractStateStore.flush(WrappedStateStore.java:85)
at
org.apache.kafka.streams.state.internals.WrappedStateStore$AbstractStateStore.flush(WrappedStateStore.java:85)
at
org.apache.kafka.streams.state.internals.CachingWindowStore.flush(CachingWindowStore.java:130)
at
org.apache.kafka.streams.state.internals.MeteredWindowStore.flush(MeteredWindowStore.java:177)
at
org.apache.kafka.streams.processor.internals.ProcessorStateManager.flush(ProcessorStateManager.java:217)
... 10 more
Caused by: org.rocksdb.RocksDBException: While open a file for appending:
YYYYYYYYYYYYY.1512000000/000007.dbtmp: Too many open files
at org.rocksdb.RocksDB.flush(Native Method)
at org.rocksdb.RocksDB.flush(RocksDB.java:3401)
at org.rocksdb.RocksDB.flush(RocksDB.java:3361)
at
org.apache.kafka.streams.state.internals.RocksDBStore.flushInternal(RocksDBStore.java:395)
------------------------------------------------------------------------------------------
We tried increasing the open files limit at OS level to some decent number..
but still no luck. Obviously we don't want to have boundless open files..
We also tried to play with commit interval(kafka.commit.interval.ms) and cache
size (kafka.cache.max.bytes.buffering) .. but no luck there either.
KAFKA-3904 talks about it.. but it was resolved long back..
Any other config tuning we have to do?
Appreciate any help in this regard!
Thanks,
Kiran