Потребитель Kafka Java использует слишком много памяти - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь заполнить тему 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();
    }
}

И процесс ЦП для этой простой "программы" занимает около 3-6 ГБ памяти: enter image description here

И работает крайне медленно - около 2-3 минут на хранение 1 сообщения.

Что не так с кафкой?Почему для отправки всего 1,5 Кб сообщения требуется столько памяти?

* Примечание Кафка запускается в док-контейнере, Java-потребитель на хост-машине.

ОБНОВЛЕНО

Если при выборе JVM добавлено -Xmx1g, я получил:

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

1 Ответ

0 голосов
/ 28 марта 2019

Я мог получить реальную причину, но перезагрузка Windows решила проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...