Kafka Java使用者使用太多内存

时间:2019-03-27 07:56:21

标签: java apache-kafka

我正在尝试使用以下测试数据填充kafka主题:

public static void main(String[] args){
    Properties properties = new Properties();
    properties.put("bootstrap.servers", "192.168.0.2:9092");
    properties.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
    properties.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

    KafkaProducer<String, String> kafkaProducer = new KafkaProducer<String, String>(properties);
    try{
        for(int i = 0; i < 100; i++){
            System.out.println(i);
            kafkaProducer.send(new ProducerRecord<String, String>("my_topic", "{\"key\":\"my-json-1500-symblos-long\"}"));
        }
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        kafkaProducer.close();
    }
}

这个简单的“程序”的CPU进程大约需要3-6Gb的内存: enter image description here

而且工作非常慢-1条消息存储大约需要2-3分钟。

卡夫卡怎么了?为什么仅发送1.5Kb消息会占用大量内存?

*注意:Kafka在Docker容器中运行,Java使用者在主机中运行。

已更新

如果根据JVM选择添加了-Xmx1g,我得到了:

java.lang.OutOfMemoryError: Java heap space
    at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57)

1 个答案:

答案 0 :(得分:0)

我可以得到实际的原因,但是Windows重新启动解决了这个问题。