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

Kafka-设置高linger.ms和batch.size没有帮助

澹台衡
2023-03-14

我试图提高Kafka生产者的吞吐量,我们有CSV报告,正在得到过程和发布到Kafka主题。使用默认的Kafka设置,我们得到的平均300-500 kbpsKafka吞吐量。为了提高吞吐量,我尝试测试了一些组合与linger.msbatch.size,但它没有帮助。

试图与

"linger.ms= 30000","batch.size= 1000000","buffer.memory=16777216"
"linger.ms= 40000","batch.size= 1500000","buffer.memory=16777216"

甚至试过用更少的玲珑。ms和batch。大小徘徊。ms=200,批次。尺寸=65000

但吞吐量仍在150-200kbps左右

但吞吐量正在下降到100-150kbps。

Kafka主题有12个分区。

ack is all, and compression is snappy

欢迎提出任何建议。

共有1个答案

东门深
2023-03-14

Confluent提供了一份全面的白皮书,解释了如何提高吞吐量,以及需要查看哪些配置

基本上,通过增加批处理,您已经完成了正确的步骤。大小和调谐延迟。ms。根据您对潜在数据丢失的要求,您还可以减少重试次数。作为提高吞吐量的一个重要因素,应该使用压缩。在producer中键入,同时设置压缩。类型=经纪人级别的制作人。

请记住,Kafka可以通过分区进行缩放,只有在集群中有足够多的代理时才会发生这种情况。有许多分区,所有分区都位于同一个代理不会增加吞吐量。

总之,白皮书提到了以下生产者配置来提高吞吐量:

batch.size: increase to 100000 - 200000 (default 16384)
linger.ms: increase to 10 - 100 (default 0)
compression.type=lz4 (default none)
acks=1 (default 1)
retries=0 (default 0)
buffer.memory: increase if there are a lot of partitions (default 33554432)

请记住,最终每个集群的行为都是不同的。此外,每个用例都有不同的消息结构(数量、频率、字节大小等)。因此,了解上述生产者配置并在实际集群上测试它们的敏感性是很重要的。

 类似资料:
  • 在kafka生产者设置中,如果您将linger.ms设置为0且非零,预期的行为是什么batch.size?生产者在发送消息之前要等待batch.size多长时间?它会一直等待直到消息的大小小于指定的批处理大小还是因为linger.ms为零,它不会做任何批处理,只是发送每个请求?

  • 我有一个用例,我需要使用Kafka进行批处理。假设在1分钟内有大约100个请求,我不想立即发布每个请求,而是想将所有100个请求分批发布到topic一次。 但是使用以下配置,批处理不会发生,一旦发送消息,它就会发布到主题并同时在消费者中接收 生产者配置 消费者配置 在这里,我设置了 linger.ms = 60000,根据我的理解,如果 linger.ms 设置为某个值,那么即使发送方线程更早变得

  • 我想在我的生态系统中建立一个高可用性的kafka-zookeper。我有2个数据中心,每个数据中心有3台物理服务器。 服务器1-第一个Kafka经纪人 服务器2-第二个Kafka代理 服务器3-第三个Kafka Broker 所以一个具有 3 个代理的 Kafka 集群 Zookepeer集成-3个物理服务器中的3个zookeeper实例 配置与DC1相似 现在我的问题是- 通过执行上述设置,我们

  • 我可以将其更改为正确的容器主机名-->plaintext://kafka:9092,但这样我就无法用其他应用程序再次访问kafka实例了。有什么简单的方法可以解决这个问题吗?

  • 我有一个电子应用程序,我想建立一个自动更新。我跟踪了这篇博文,做了一个小演示,它工作很好,有一些小改动。然后我尝试用我的实际项目来实现它,现在我得到了一个错误。 我已经有了Electron-Builder.yml文件,我甚至尝试过设置GT_TOKEN和变量,但它仍然抛出相同的错误。

  • 我正在尝试为一个get请求设置头。功能如下: 但是头。get('Authorization')由于某种原因为空,我无法找出原因。任何帮助都将不胜感激。