背景
因为1.1对Controller进行了重构,看官方介绍性能有很大提升,正好觉得当前1.0版本Controller处理有些慢,简单测试了下性能差异。
压测环境:
Broker机器:5台
Broker JVM配置:-Xms2g -Xmx4g -Xmn1280m -XX:+UseConcMarkSweepGC
日志存储目录:2个目录
Kafka版本:1.0、1.1
副本数:3
每个topic分区数:100
评估指标
官方并没有提供Controller性能相关的metric,不过根据Controller的职责和网上的资料,通常根据Broker的启停耗时和Controller容灾切换时间来判断Controller的性能,耗时越长说明当前Controller性能压力越大。
压测结果
1.0
topic总数 | 单机分区数 | Broker启动耗时(s) | Broker关闭耗时(s) | Controller切换耗时(s) | Broker kill -9 Controller处理耗时 | 备注 |
---|---|---|---|---|---|---|
1 | 40 | 5 | 4 | 6 | 9 | |
2 | 100 | 6 | 4 | 5 | 6 | |
3 | 160 | 6 | 4 | 30 | 7 | |
4 | 220 | 5 | 3 | 30 | 7 | |
6 | 400 | 5 | 4 | 19 | 7 | |
9 | 580 | 7 | 18 | 30 | 6 | |
12 | 760 | 7 | 20 | 21 | 9 | |
16 | 1000 | 7 | 22 | 22 | ||
31 | 1900 | 8 | 22 | 32 | ||
46 | 2800 | 7 | 25 | 39 | ||
61 | 3700 | 8 | 34 | 33 | ||
91 | 5500 | 8 | 113 | 47 | 删除topic慢 | |
121 | 7300 | 9 | 92 | 97 | ||
151 | 9100 | 10 | 86 | 85 | 删除topic特别慢 | |
181 | 10900 | 12 | 87 | 87 | ||
221 | 13300 | 13 | 108 | 98 | 已经不能删除topic |
1.1
topic总数 | 单机分区数 | Broker启动耗时(s) | Broker关闭耗时(s) | Controller切换耗时(s) | Broker kill -9 Controller处理耗时 | 备注 |
---|---|---|---|---|---|---|
1 | 40 | 5 | 2 | 1 | 5 | |
2 | 100 | 4 | 2 | 1 | 5 | |
3 | 160 | 5 | 4 | 2 | 6 | |
4 | 220 | 4 | 2 | 2 | 6 | |
6 | 400 | 5 | 2 | 1 | 6 | |
9 | 580 | 5 | 3 | 2 | 6 | |
12 | 760 | 6 | 4 | 1 | 6 | |
16 | 1000 | 7 | 3 | 2 | ||
31 | 1900 | 6 | 5 | 3 | ||
46 | 2800 | 7 | 5 | 3 | ||
61 | 3700 | 4 | 7 | 4 | ||
91 | 5500 | 7 | 7 | 6 | ||
121 | 7300 | 10 | 8 | 8 | ||
151 | 9100 | 9 | 8 | 10 | ||
181 | 10900 | 10 | 10 | 12 | ||
221 | 13300 | 12 | 13 | 16 | 删除topic慢 |
1.0与1.1对比
分析
从压测结果可以看到,随着分区数越来越多,耗时指标均呈现上涨趋势。启动Broker启动耗时上涨最慢,应该是分区内没数据,所以加载很快,线上遇到过分区数500,加载半小时的情况。Broker关闭耗时上涨较快是因为在优雅关闭时需要进行Leader切换,导致时间较长。Controller耗时上涨是由于需要管理的分区数增长导致。1.1版本的Controller性能确实提高不少,在分区数持续增长情况下,耗时也能基本保持在个位数。
直接对Broker进行kill -9,发现Controller对的处理耗时并未明显增长。具体又分为两种情况:1、kill -9比优雅关闭耗时短,这和预期也一致,因为优雅关闭会将当前要刷盘的数据刷完后才会关闭各类线程,耗时必然会长一些。2、kill -9比优雅关闭耗时长,这主要是因为znode节点失效时间导致,默认是6s,所以最长等待6s才会认为该broker挂掉,进行Leader切换的处理流程。
最后,如果有升级计划,最好升级到1.1版本或之后的版本~~