卡夫卡制片人表现不佳

问题描述 投票:0回答:2

我和kafka制作人有问题。其实我正在使用spring kafka,并通过KafkaTemplate发送消息:

DefaultKafkaProducerFactory<K, V> defaultKafkaProducerFactory = new DefaultKafkaProducerFactory<>(producerParams);
KafkaTemplate kafkaTemplate = new KafkaTemplate<>(defaultKafkaProducerFactory);
RecordMetadata recordMetadata = kafkaTemplate.send(record).get().getRecordMetadata();

问题是有时发送消息需要4-20秒。有很多消息需要100毫秒才能发送。所以我几乎没有问题:

  1. 消息大小和吞吐量之间是否存在任何关联,这种关系是什么?
  2. 我应该先检查一下,也许我没有做好调音,任何方向?
apache-kafka messaging producer-consumer kafka-producer-api spring-kafka
2个回答
2
投票

好吧,实际上问题出现在机器上,cpu很高,Cloudera经理中有日志

检测到JVM或主机中的暂停(例如,停止世界GC或未安排的JVM):暂停约4332ms:未检测到GC。

检测到JVM或主机中的暂停(例如,停止世界GC或未安排的JVM):暂停大约10827ms:GC池'ConcurrentMarkSweep'有集合:count = 1 time = 11107ms

当我在具有8个核心的机器上运行相同时 - 问题就消失了。建议的另一件事是增加经纪人的Java堆大小


0
投票

如果您拥有大量数据,那么Kafka生产商需要进行性能调整。在这种情况下,最好配置batch.size,linger.ms和buffer.memory。通常,在kafka中,batch.size默认配置为16K字节。要提高性能,只需增加batch.size。

props.put(ProducerConfig.BATCH_SIZE_CONFIG, 16_384 * 4);
    // Send with little bit buffering
    props.put(ProducerConfig.LINGER_MS_CONFIG, 200);    
  //Use Snappy compression for batch compression.
    props.put(ProducerConfig.COMPRESSION_TYPE_CONFIG, "snappy");

通过上述配置,性能必须良好。您可以在以下链接中找到更多详细信息。

Kafka Performance

© www.soinside.com 2019 - 2024. All rights reserved.