Hi,

I'm running a Kafka Streams app with windowing function. I noticed
that internal topic -repartition has huge lag while the system CPU
usage is low and app is stable(join rate is almost 0).

The repartition topic is an internal topic and created by the
application automatically. The bytes in per sec for this topic is
about 65MB/sec while the bytes out for this topic is only 15MB/sec. I
have tried a couple configs to customize RocksDB config, but none of
it could increase the bytes out value.

I changed the default RocksDB block case size to 125MB and block size
to 125MB as well. Also set the max write buffer number to 3. But it
didn't help.

May I know what I missed here? What's the best way to find why
internal repartition topic has huge lags?

Thanks for all the helps!!

My RocksDB config:
public static class CustomRocksDBConfig implements RocksDBConfigSetter {
    private org.rocksdb.Cache cache = new org.rocksdb.LRUCache(125 *
1024L * 1024L);

    @Override
    public void setConfig(final String storeName, final Options
options, final Map<String, Object> configs) {
        int n = Runtime.getRuntime().availableProcessors();
        options.setMaxBackgroundCompactions(n);
        options.setWriteBufferSize(125 * 1024 * 1024);
        BlockBasedTableConfig tableConfig = (BlockBasedTableConfig)
options.tableFormatConfig();
        tableConfig.setBlockCache(cache);
        tableConfig.setBlockCacheSize(125 * 1024 * 1024L);
        tableConfig.setBlockSize(125 * 1024L);
        tableConfig.setCacheIndexAndFilterBlocks(true);
        options.setTableFormatConfig(tableConfig);
        options.setMaxWriteBufferNumber(3);
    }

    public void close(final String storeName, final Options options) {
        // See #5 below.
        cache.close();
    }

}

Thanks
Kathy

Reply via email to