ホーム>source

私のカフカのトピックのいくつかは、私が明確に説明できない方法で動作していることに気付きました。

例えば:

./kafka-topics.sh --describe --zookeeper ${ip}:2181 --topic test
Topic:test  PartitionCount:3    ReplicationFactor:1 Configs:retention.ms=1209600000
    Topic: test Partition: 0    Leader: 1   Replicas: 1 Isr: 1
    Topic: test Partition: 1    Leader: -1  Replicas: 2 Isr: 2
    Topic: test Partition: 2    Leader: 3   Replicas: 3 Isr: 3

私は特に、リーダー1を示すパーティション1について心配しています。

また、このトピックに対して生成されるメッセージの約1/3が「タイムアウト」のために失敗することにも気付きました。これは、1つのパーティションにリーダーがいないことの結果だと思います。

この問題が発生する理由と、データを失うことなく本番シナリオでこれから回復する方法についての洞察を誰かが持っているのだろうかと思いました

編集: librdkafkaベースのPythonプロデューサーを使用しています。そして私が見るエラーメッセージは Message failed delivery: KafkaError{code=_MSG_TIMED_OUT,val=-192,str="Local: Message timed out"} です

あなたの答え
  • 解決した方法 # 1

    おそらく、2番目のカフカブローカーがダウンしています。 アクティブなKafkaブローカーを確認するには、実行する必要があります

    ./zookeeper-shell.sh localhost:2181 <<< "ls /brokers/ids"
    
    

    また、出力は次のようになります。

    Connecting to localhost:2181
    Welcome to ZooKeeper!
    JLine support is enabled
    WATCHER::
    WatchedEvent state:SyncConnected type:None path:null
    [zk: localhost:2181(CONNECTED) 0] ls /brokers/ids
    [0, 1, 2]
    [zk: localhost:2181(CONNECTED) 1]
    
    

    2番目のブローカーがアクティブなブローカーにリストされていない場合は、稼働していない理由を把握する必要があります(何か問題が発生した場合はログに記録されます)。また、マルチブローカー構成があるため、replication-factorを増やすことをお勧めします。

  • 解決した方法 # 2

    これは多くの場合、そのパーティションをリードするブローカーがオフラインであることを示しています。オフラインパーティションメトリックを確認してこれを確認しますが、ブローカー2が現在機能しているかどうかも確認します。

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ プログラムがクラッシュすることなく、C/C ++でリンクリストを適切に実装する方法