Apache kafka 测试Kafka生产商吞吐量

Apache kafka 测试Kafka生产商吞吐量,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,我们有一个Kafka集群,由3个节点组成,每个节点有32GB的RAM和6个核心2.5CPU 我们写了一个卡夫卡制作人,他从推特上接收推特,然后批量发送5000条推特给卡夫卡 在Producer中,我们使用Producer.send(list)方法 推文的平均大小为7KB 打印send语句前后的时间(以毫秒为单位)以测量发送5000条消息所需的时间,我们发现大约需要3.5秒 问题 我们测试卡夫卡表演的方式正确吗 使用接收键控消息列表的send方法是否是向Kafka发送一批消息的正确方法?还有别的办

我们有一个Kafka集群,由3个节点组成,每个节点有32GB的RAM和6个核心2.5CPU

我们写了一个卡夫卡制作人,他从推特上接收推特,然后批量发送5000条推特给卡夫卡

在Producer中,我们使用
Producer.send(list)
方法

推文的平均大小为7KB

打印send语句前后的时间(以毫秒为单位)以测量发送5000条消息所需的时间,我们发现大约需要3.5秒

问题

我们测试卡夫卡表演的方式正确吗

使用接收键控消息列表的send方法是否是向Kafka发送一批消息的正确方法?还有别的办法吗


影响生产商绩效的重要配置有哪些

你只是在衡量制作人方面?该指标只告诉您在一个时间单位中可以存储多少数据

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

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

如果集群配置正确(默认配置就可以了),您应该会看到延迟从几毫秒(小于10毫秒)到50毫秒(几十毫秒)不等

卡夫卡之所以能够做到这一点,是因为消费者读取的消息甚至都不接触磁盘,因为它们仍然在RAM(页面缓存和套接字缓冲缓存)中。请记住,只有当你能够“赶上”你的消费者,即没有大的消费者滞后时,这才有效。如果消费者落后于生产者,消息最终将从缓存中清除(取决于消息的速率-缓存填充新消息所需的时间),因此必须从磁盘读取。即使这样,也不是世界末日(在低100毫秒的范围内,速度慢了一个数量级),因为消息是连续写入的,一条接一条是一条直线,这是单磁盘寻道


顺便说一句,你只想给卡夫卡32GB中的一小部分,例如5到8GB(甚至G1垃圾收集器也会因较大的大小而变慢),而不分配其他内容,这样操作系统就可以将其用于页面和缓冲区缓存。

Thnx Marko,我编辑了问题标题,专门针对制作人。