繁体   English   中英

测试Kafka生产者的吞吐量

[英]Testing Kafka producer throughput

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

我们编写了一个kafka生产者,该生产者从Twitter接收推文,然后将其发送给Kafka,分5000次发送。

在生产者中,我们使用producer.send(list<KeyedMessages>)方法。

该推文的平均大小为7KB。

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

问题

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

使用接收键控消息列表的send方法是否是将大量消息发送到Kafka的正确方法? 还有其他办法吗?

有哪些重要配置会影响生产者的绩效?

您只是在衡量生产商方面? 该指标仅告诉您单位时间内可以存储多少数据。

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

您可以通过测量使用者发送消息和接收另一端消息之间的时间差来实现。

如果正确配置了群集(默认配置即可),则应看到的延迟范围仅从几毫秒(不到10毫秒)到50毫秒(几十毫秒)不等。

Kafka之所以能够这样做,是因为消费者读取的消息甚至都不会接触磁盘,因为它们仍然在RAM(页面缓存和套接字缓冲区缓存)中。 请记住,这仅在您能够“追赶”消费者时才有效,例如,消费者的滞后时间不大。 如果消费者落后于生产者,则最终将从缓存中清除消息(取决于消息的速率-缓存填充新消息需要多长时间),因此必须从磁盘读取消息。 即使这还不是世界末日(幅度较低的数量级,在100s的低范围内),因为消息是连续写入的,所以一条一条直线是一条直线,这是一次磁盘搜索。

顺便说一句,您只希望为Kafka分配32GB内存中的一小部分,例如5至8GB(即使G1垃圾收集器的容量变大,速度也会降低),并且不分配其他所有内容,以便OS可以将其用于页面和缓冲区缓存。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM