2017-11-05 18 views
0

私のカフカバージョンは0.10.2.1です。 私のサービスは本当にqps(1msg/sec)が低いです。そして、私たちのrttの要件は本当に厳格です。 (99.9%< 30ms) 現在、カフカが長時間(15日程度)実行されると、パフォーマンスが低下する問題が発生しました。 2017年10月21日はカフカレイテンシ最適化

Time .    num of msgs . percentage 
cost<=2ms    0    0.000% 

2ms<cost<=5ms   12391   32.659% 

5ms<cost<=8ms   25327   66.754% 

8ms<cost<=10ms  186   0.490% 

10ms<cost<=15ms  24   0.063% 

15ms<cost<=20ms  2    0.005% 

20ms<cost<=30ms  0    0.000% 

30ms<cost<=50ms  4    0.011% 

50ms<cost<=100ms  1    0.003% 

100ms<cost<=200ms  0    0.000% 

200ms< cost<=300ms 6    0.016% 

300ms<cost<=500ms  0    0.000% 

500ms<cost<=1s  0    0.000% 

cost>1s    0    0.000% 

のようだった。しかし、最近、それはなった:

cost<=2ms   0    0.000% 

2ms<cost<=5ms  7592   29.202% 

5ms<cost<=8ms  17470   67.197% 

8ms<cost<=10ms  698   2.685% 

10ms<cost<=15ms  143   0.550% 

15ms<cost<=20ms  23    0.088% 

20ms<cost<=30ms  19    0.073% 

30ms<cost<=50ms  11    0.042% 

50ms<cost<=100ms  5    0.019% 

100ms<cost<=200ms 11   0.042% 

200m s<cost<=300ms 26    0.100% 

300ms<cost<=500ms 0    0.000% 

500ms<cost<=1s  0    0.000% 

cost>1s    0    0.000% 

私はログを確認すると、私は特定のメッセージを持っている理由をチェックする方法が表示されません高いrtt。そして

  • (OSチューン、ブローカーの設定)を最適化するためにどのような方法があります、

    +0

    ブローカーとクライアントの設定を共有できますか?クライアントの再起動後、パフォーマンスは向上しますか? –

    +0

    num.network.threads = 3 num.io.threads = 10 message.max.bytes = 10000120 replica.fetch.max.bytes = 10000120 min.insync.replicas = 2 connections.max.idle.ms = 86400000 leader.imbalance/home/disk1/kafka、/ home/disk2/kafka、/ home/disk3/kafka、/ home/ssd1/kafka、/h ome/ssd2/kafka num.partitions = 20 num.recovery.threads.per.data.dir = 2 num.replica.fetchers = 3 default.replication.factor = 3 unclean.leader.election.enable = false – user2283216

    +0

    それを除いて、クライアント側ではrequired.acksは常に-1に設定され、My 3ブローカーは3つの異なるデータセンターにありますが、ある都市では2つの間の平均pingは約1.5msです – user2283216

    答えて

    0

    リクエストの処理時間を短縮することなく、問題の原因を特定するのは難しいでしょう。具体的には、あなたのJMXをフックアップして、次の要求レベルの指標をチェックする必要があります:

    TotalTimeMs RequestQueueTimeMs LocalTimeMs RemoteTimeMs ResponseQueueTimeMs ResponseSendTimeMs

    https://kafka.apache.org/documentation/#monitoring

    その平均/ 99パーセンタイルをチェック時間の経過とともに値が変化し、いずれがperf劣化に寄与しているかを見る。

    +0

    fetchFollowerTotalMs 99thおよび両方とも非常に高い... cpu idle 94%以上です。 memは15%、ディスクio utilsは5%以下、何が問題になったのですか。 – user2283216

    +0

    fetchFollowerでremoteTimeMsとlocalTimeMsはどういう意味ですか、どちらがローカルであるかわからない – user2283216

    +0

    待ち時間の大部分がフォロワをフェッチすると、あなたのフォロワーのフェッチャースレッドがリーダーからの取り出しが忙しいことを示します。フェッチフォロワの場合、リモート時間は必要ありません。ローカル時間には、フェッチされたレコードをローカルログに追加するのに費やされる時間が含まれます。 –