卡夫卡延迟优化

时间:2017-11-05 15:55:38

标签: apache-kafka

我的kafka版本是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的原因的方法。如果有任何方法可以优化(操作系统调整,代理配置),请赐教我

2 个答案:

答案 0 :(得分:1)

如果没有请求处理时间细分,很难说哪个部分可能是您问题的罪魁祸首。更具体地说,您需要连接jmx并检查以下请求级指标:

TotalTimeMs RequestQueueTimeMs LocalTimeMs RemoteTimeMs ResponseQueueTimeMs ResponseSendTimeMs

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

随着时间的推移检查它们的avg / 99百分位值,看看哪一个导致了性能退化。

答案 1 :(得分:0)

  1. 考虑升级到0.11(或1.00),其性能有所提升

  2. 优化文章:https://www.confluent.io/blog/optimizing-apache-kafka-deployment/