kstreams应用程序-内存使用过多

yhuiod9q  于 2021-06-07  发布在  Kafka
关注(0)|答案(0)|浏览(254)

我正在运行一个(相对)简单的kstreams应用程序:
流->按键聚合->筛选器->foreach
它在aws ec2上以32gb/8cpu的速度每分钟处理约20万条记录
启动后10分钟内,内存使用率超过40%。不久之后(通常不到15分钟),操作系统将杀死它。
配置:

config.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, "450000");
config.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 250);
config.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest");
config.put(StreamsConfig.TIMESTAMP_EXTRACTOR_CLASS_CONFIG, EventTimeExtractor.class.getName());

config.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "snappy");
config.put(StreamsConfig.NUM_STANDBY_REPLICAS_CONFIG, "2");

聚合步骤:

KTable<Windowed<String>, String> ktAgg = sourceStream.groupByKey().aggregate(
        String::new,
        new Aggregate(),
        TimeWindows.of(20 * 60 * 1000L).advanceBy(5 * 60 * 1000L).until(40 * 60 * 1000L),
        stringSerde, "table_stream");

使用Kafka0.10.1.1
关于在哪里寻找罪犯的建议?

旁注:

我试着用newrelic javaagent检测这个应用程序。当我和你一起跑的时候 -XX:+useG1GC 它执行了标准的“使用大量内存然后被杀死”,但是当我删除g1gc参数时,进程将系统负载提升到>21。我不得不亲手杀了那个。
newrelic的输出并没有显示任何异常的内存管理。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题