簡體   English   中英

單個Kafka主題上的多個消費者都很慢

[英]Multiple consumers on single Kafka topic are slow

我在3台服務器上有Kafka集群。 一個主題有一個分區和3個副本。 平均消息約為200字節。

我希望多個使用者(即具有不同組ID的使用者)從該主題中讀取信息,因此每個使用者都將接收所有數據。

問題在於每個新消費者的速度都比以前慢,因此在添加約20個消費者之后,新消費者的速度非常慢。

下表顯示了問題:

topic        consumer    current offset
topic-0      group-1     4191232
topic-0      group-4     3860979
topic-0      group-2     3799224
topic-0      group-12    2112518
topic-0      group-7     1984491
topic-0      group-3     1842349
topic-0      group-6     1695504
topic-0      group-11    1388133
topic-0      group-5     1383794
topic-0      group-19    1242424
topic-0      group-16    941960 
topic-0      group-14    876551 
topic-0      group-22    837359 
topic-0      group-21    828698 
topic-0      group-13    811273 
topic-0      group-26    716414 
topic-0      group-9     699175 
topic-0      group-18    621772 
topic-0      group-15    617520 
topic-0      group-17    613233 
topic-0      group-10    388891 
topic-0      group-8     328258 
topic-0      group-24    233805 
topic-0      group-29    131299 
topic-0      group-23    84658  
topic-0      group-20    80492  
topic-0      group-27    63527  
topic-0      group-25    50720  
topic-0      group-28    46474  
topic-0      group-30    37958  

這些使用者幾乎同時啟動,並且在大約20秒后捕獲了此狀態。 第1組讀取419萬條記錄,第30組僅讀取37958條記錄。

消費者分布各不相同,但總是有緩慢的消費者。

我嘗試在專用服務器上以及本地Kafka群集上運行使用者,情況沒有改變。

在慢速消費者上的日志消息顯示往返時間較長,有時甚至超過一秒

kafka3:9092/3: Sent FetchRequest (v4, 93 bytes @ 0, CorrId 36322)
kafka3:9092/3: Received FetchResponse (v4, 1048636 bytes, CorrId 36322, rtt 747.24ms)

kafka控制台使用者和librdkafka可以重現此問題,因此我認為經紀人出了點問題。

我已將代理配置中的num.io.threads和num.network.threads參數設置為32,這沒有幫助。 其他參數是默認值。

任何幫助將不勝感激。

更新1

經紀人上的慢速消費者的日志消息表明問題肯定在經紀人方面:

[2018-03-07 12:58:42,787] DEBUG Completed request:RequestHeader(apiKey=OFFSET_COMMIT, apiVersion=1, clientId=rdkafka, correlationId=376) -- {group_id=group-12,generation_id=13,member_id=rdkafka-5c08ffd4,topics=[{topic=test-topic,partitions=[{partition=0,offset=651909,timestamp=-1,metadata=}]}]},response:{responses=[{topic=test-topic,partition_responses=[{partition=0,error_code=0}]}]} from connection kafka3:9092-client12:37884-10;totalTime:1547.433,requestQueueTime:0.104,localTime:0.631,remoteTime:1546.48,throttleTime:0.019,responseQueueTime:0.046,sendTime:0.15,securityProtocol:PLAINTEXT,principal:User:ANONYMOUS,listener:PLAINTEXT (kafka.request.logger)

remoteTime是1.5秒

因此,這里的問題是我應該在經紀人方面尋找解決方案?

問題在於,使用者占用了代理服務器上的所有可用網絡。

Kafka可能會以某種確定的順序(根據我所知的連接時間)將響應發送給消費者。 因此我們得到了一些非常快的消費者,以及一群速度合理的消費者。 其他消費者很慢,只有斷開“快速”消費者才能為他們提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM