kafka-0.10.2.1:Producer生產時無法自動創建Topic


 

集群環境:

CenterOS 1台

Kafka:0.10.2.1版本。

今天在測試環境下,我們的Kafka集群工作不正常,具體現象為,使用confulentkafka向kafka集群生產消息失敗,且並沒有任何異常。

檢查server配置、broker日志、程序異常日志等等都沒有發現,網上搜索資料,並沒有類似的現象出現,這就很令人絕望。

沒辦法,自己寫測試程序,注冊confluentkafka的producer error事件一點點打印日志。

發現一個有規律的現象:

  • 發送每經過一段時間之后,producer的報告會打印Local:Mesasge Time out的異常,

經過簡單分析,得出基本結論:該異常並不是引發消息發送不過去的誘因,而是結果。精力不能放到這個異常上面。

但是好歹也算是給我一個方向:producer在生產數據時,消息發送超時,並沒有發送過去,超時了。

有了初步的方向,首先就要先確定

  • producer-client與broker的網絡連接健康狀態,(這個不用多說,聯系運維同事,各種測驗,甚至內網ip都換了過,初步排除。)
  • topic是否自動創建
  • 發送消息時消息體有沒有限制。
  • 其他等

網絡問題初步排除后,我們去檢查auto.create.topics.enable的配置,默認為true,理論上來講topic應該會自動創建。

且其他環境的topic都可以完美的自動創建。好吧,抱着試試看的態度,手動創建topic,然后發消息。不多說,上圖

 

 

竟然發送過去了。

昨天各種測驗各種排查甚至連神器windbg也沒放過,都沒找到問題,抱着試試看的態度一試,竟然找到了原因:因為Topic沒有自動創建,導致消息發送失敗。

好吧,接下來的問題就簡單了,排查為啥Topic沒有自動創建成功

繼續注冊日志事件跟進

上邊那個異常有誤導我很長時間,暫且略過不表,跟他關系不大。

主要原因在下邊:Topic Partition Count is Zero,should refresh metadata。

我們知道,metadata的信息是存在zookeeper中的,有可能是broker和zookeeper的信息同步不及時或者有問題導致topic創建問題失敗。

去檢查server.properties(又來檢查了):zookeeper.connect的配置是內網的配置10.x.x.46:2181。

鑒於zookeeper和kafka都在同一台機器上,把zookeeper的地址改成127.0.0.1,做嘗試,果不其然:

Topic可以自動創建,消息生成成功,問題解決。至此,這次kafka的排障就告一段路。

結論:生產發送失敗時,主要從以下幾個方向入手檢查

1、要檢查網絡連通性

2、topic是否正常創建

3、kafka和zookeeper的連通性,重要的事情要重點標注

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM