当前位置: 首页 > 知识库问答 >
问题:

Kafka制作人表现不佳

傅皓君
2023-03-14

我对kafka制作人有问题。实际上我正在使用Spring kafka,并通过KafkaTemboard leke发送消息:

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

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

> < li>

消息大小和吞吐量之间是否有关联,这种关系是什么?

我应该首先检查什么,也许我没有很好地调整,任何方向?

共有2个答案

皇甫礼骞
2023-03-14

如果你有大量的数据,那么Kafka生产者需要性能调整。在这种情况下,最好配置batch.size,linger.ms

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表演

敖硕
2023-03-14

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

在 JVM 或主机中检测到暂停(例如,停止世界 GC,或未调度 JVM):暂停约 4332 毫秒:未检测到 GC。

在JVM或主机中检测到暂停(例如,停止全局GC,或JVM未计划):暂停约10827ms:GC池“ConcurrentMarkSweep”有个集合:count=1 time=11107ms

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

 类似资料:
  • 下面给出的kafka producer程序不是通过Eclipse在Windows中运行的,而是在Unix平台上运行的(即,当我在承载kafka代理的Unix中运行它时,它工作正常)。windows不支持Kafka制作人吗?但是,我可以从windows计算机ping ip地址。请帮忙。 这是我得到的异常错误。 log4j:WARN找不到记录器的附加程序(kafka.utils.VerifiableP

  • 我正在考虑创建一个独立的Kafka生产者,它作为守护进程运行,通过套接字接收消息,并将其可靠地发送给Kafka。 但是,我决不能是第一个想到这个想法的人。这样做的目的是避免使用PHP或Node编写Kafka生成器,而只是通过套接字将消息从这些语言传递到独立的守护进程,这些语言负责传递,而主应用程序则一直在做自己的事情。 此守护进程应负责在发生中断时进行重试传递,并充当服务器上运行的所有程序的传递点

  • 我想让我的Kafka制作人变得富有交易性。我正在发送10条消息。如果发生任何错误,则不应向Kafka发送任何消息,即无或全部。 我使用的是Spring Boot KafkaTemplate。 我正在发送文件中提到的10条信息,如下所示。应发送9条消息,且I消息大小超过1MB,由于 https://docs.spring.io/spring-kafka/reference/html/#using-K

  • 我正在探索反应性Kafka,只是想确认反应性Kafka是否等同于同步制作人。与同步生产者,我们得到消息传递保证与确认字符和生产者序列保持。但是,ASYNC不能保证交付和测序。反应式生产者等同于SYNC还是ASYNC?

  • 我想使用spring cloud stream framework创建一个kafkaendpoint,它将有一个http post api到。如何动态更改属性 我可以使用实现来实现上述功能,但不知道是否有可能在Spring中开发此功能。

  • 创建了一个群集,其中有两个代理使用相同的动物园管理员,并试图为主题生成消息,其详细信息如下。 当生产者设置或-1时,,它应该接收代理(领导者和副本)的确认,但当一个代理在制作时手动关闭时,即使在acks=“all”有人能解释这种奇怪行为的原因时,对Kafka制作人也没有任何影响? 经纪人在9091,9092。 下面是Kafka制作人的源代码