首页 文章

测试Kafka 生产环境 商吞吐量

提问于
浏览
0

我们有一个Kafka集群,包括3个节点,每个节点有32GB RAM和6个核心2.5 CPU .

我们写了一个kafka制作人,他从twitter接收推文并将其发送给Kafka,分批发送5000条推文 .

在Producer中我们使用 producer.send(list<KeyedMessages>) 方法 .

推文的平均大小为7KB .

在send语句之前和之后打印时间以毫秒为单位来测量发送5000条消息所花费的时间,我们发现大约需要3.5秒 .

问题

我们测试Kafka性能的方式是否正确?

使用带有键控消息列表的send方法以正确的方式向Kafka发送一批消息?还有其他方法吗?

影响 生产环境 者绩效的重要配置是什么?

1 回答

  • 0

    你只测量 生产环境 者方面?该指标仅告诉您可以在一个单位时间内存储多少数据 .

    也许这就是你想要衡量的,但由于你的问题的 Headers 是“Kafka表现”,我认为你实际上想要测量吞吐量,即消息通过Kafka需要多长时间(通常称为端到端延迟) .

    您可以通过测量消费者在另一方发送消息和接收消息之间的时间差来实现这一点 .

    如果群集配置正确(默认配置可以),您应该看到的延迟时间范围仅为几毫秒(小于10毫秒),最长为50毫秒(几十毫秒) .

    Kafka能够做到这一点,因为消费者阅读的消息甚至没有触及磁盘,因为它们仍然在RAM(页面缓存和套接字缓冲区缓存)中 . 请记住,只有当您能够“赶上”消费者,即没有大的消费者滞后时,这才有效 . 如果消费者落后于 生产环境 者,消息最终将从缓存中清除(取决于消息的速率 - 缓存填充新消息所需的时间),因此必须从磁盘读取 . 即使这不是世界末日(数量级较慢,在ms的低100s范围内),因为消息是连续写入的,一个接一个是直线,这是一个单一的磁盘搜索 .

    顺便说一下,你想给Kafka只有32GB的一小部分,例如5到8GB(即使是G1垃圾收集器也会因为更大的尺寸而减慢速度)并保留其他所有未分配的内容,因此操作系统可以将其用于页面和缓冲区缓存 .

相关问题