問題の解析
最近カフカ・ストーム-のHBaseはその後、統合を行ったカフカのメッセージキューの消費者の泥棒が遅い問題を発見しました。
インターネットは、この問題に関連していないようです、私は少し私の実際の経験を共有しましょう。
次のように私のKafkaSpout構成は次のとおりです。
プライベート 静的 KafkaSpoutConfig <文字列、文字列> newKafkaSpoutConfig(){ 戻り( "172.16.3.82:9092,172.16.3.83:9092,172.16.3.84:9092"、 "テスト・トピック" KafkaSpoutConfig.builderを) .setProp(ConsumerConfig.GROUP_ID_CONFIG、 "kafkaSpoutTestGroup" ) .setProp(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG、 2048 ) .setMaxUncommittedOffsets( 250 ) .build(); }
setMaxUncommittedOffsets(250)、性交が250である理由:1つの引数がありますか?オンライン多くの人々は、このパラメータを使用している、あなたの良心は傷つけることはありませんか?
そして、このパラメータのデフォルト値はどのくらいですか?
デフォルト値は次のとおりです。1000W。
私は何をこのパラメータの意味を知っているが、なぜ250がそれを遅くする設定しますか?
offset.commit.period.ms、このパラメータはカフカにコミットする頻度を制御することです。理由は、それとに関連する他のパラメータがあることです。
maxUncommittedOffset =実行プロセス250は、ようなものです。
- 我々はmaxUncommittedOffsetに達した250件のメッセージを、消費した場合、クライアント(カフカスパウト)へのこの時間は、もはやポーリングすることはできません、それがコミットするのを待ちます。
- デフォルトのサイクルでは、この時点でコミットあなたは彼の母親はサイクルをコミット変更しない場合、あなたはわずか250の30代を消費することができることを意味30000ミリ秒(一度価格を上げるために、すなわち30秒)、です。
くそー、250、250頭をパラメータを設定します!!!
ヒント:必要なチューニングやトラブルシューティングのための動作原理を学び、実際には、キーはあなたがすぐに解決できる問題に加えている、難しいことではありません。
カフカスパウトパフォーマンスチューニング
カフカの注ぎ口は、その性能を制御するための2つの内部パラメータを提供します。これらのパラメータは、setOffsetCommitPeriodMsとsetMaxUncommittedOffsets方法を設定することができます。
- 「Offset.commit.period.msは」カフカを提出するどのくらいの注ぎ口を制御します
- 次のオフセットはどのくらい制御「Max.uncommitted.offsetsは」発生した世論調査を提出する前に待機することができます
カフカ消費者の設定パラメータは、注ぎ口のパフォーマンスに影響します。最大の注ぎ口のパフォーマンス上のいくつかのパラメータの以下の効果:
- "fetch.min.bytes"
- "fetch.max.wait.ms"
- カフカ消費者ポーリングタイムアウトインスタンス、スパウトカフカ方法で設定された各setPollTimeoutMs
あなたのカフカクラスターの構造、データの配布、および世論調査データと可用性によると、これらのパラメータは、正しい設定が必要です。カフカカフカパラメータチューニングに関するドキュメントを参照してください。
デフォルト値
現在、カフカの注ぎ口は、テスト環境で優れた性能を持って、次のデフォルト値があります。
- poll.timeout.ms = 200
- offset.commit.period.ms = 30000(30秒)
- max.uncommitted.offsets = 10000000