【发布时间】:2018-04-17 19:49:54
【问题描述】:
我的 kafka 版本是 0.10.2.1。 我的服务的 qps 非常低(1msg/sec)。而且我们对rtt的要求真的很严格。 ( 99.9%
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 原因的方法。如果有任何优化方法(操作系统调整,代理配置),请赐教
【问题讨论】:
-
您能分享您的代理和客户端配置吗?重启客户端后性能有提升吗?
-
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.check.interval.seconds=30 log.dirs=/home/disk0/kafka,/home/disk1/kafka,/home/disk2/kafka,/home/disk3/kafka, /home/ssd1/kafka,/home/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
-
除此之外,在客户端,required.acks 将始终设置为 -1,并且我的 3 个经纪人位于 3 个不同的数据中心,但在一个城市,他们每个人之间的平均 ping 为约 1.5 毫秒
-
您是否在监控任何系统/应用统计信息?
-
cpu 平均空闲率为 98% ~ 99%,内存空闲率为 85%(总共 128g)qps 非常低,因此网络 IO 低。我还设置了 vm.swappiness = 0 来禁用交换。但是我还没有把 jmx 放在监视器上。
标签: apache-kafka