簡體   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