38 | 调优Kafka,你做到了吗?
该思维导图由 AI 生成,仅供参考
调优目标
优化漏斗
- 深入了解
- 翻译
- 解释
- 总结
Kafka性能调优是提高系统性能的关键,本文从优化目标、优化漏斗、基础性调优四个方面详细介绍了Kafka的调优方法。首先,明确了调优目标是为了实现高吞吐量和低延时。其次,提出了优化漏斗的概念,分为应用程序层、框架层、JVM层和操作系统层,指导读者在每个层级上进行相应的优化调整。在基础性调优方面,文章详细介绍了操作系统调优和JVM层调优的方法,包括文件系统选择、swap空间设置、ulimit -n和vm.max_map_count参数设置、堆大小设置以及GC收集器的选择等。此外,还介绍了Broker端调优的重要性和应用层调优的一些公共法则。通过分层的方式,为读者提供了全面的Kafka调优指南,帮助读者更好地理解和实践Kafka的性能优化。文章还分享了调优吞吐量和延时的参数配置以及具体的配置原因,以及一个性能调优的真实案例,强调了窄化和定位问题的重要性。文章内容丰富,实用性强,对于需要优化Kafka性能的读者具有很高的参考价值。
《Kafka 核心技术与实战》,新⼈⾸单¥68
全部留言(32)
- 最新
- 精选
- 诗泽请问最后这个例子中的测试 Console Consume是怎样污染缓存页的?是因为它读取了比较老的数据,使得新数据被写入磁盘导致的吗?
作者回复: 是的
2019-08-29524 - diyun老师你好,我们生产遇到一个问题,一个kafka broker集群升级到1.0.0后,consumer 客户端版本还是老的0.10.0.1,这样没法使用zero copy特性了导致有大量数据写入后kafka broker OOM了。请问我如果把consumer 客户端版本升级到1.0.0后,他连接的另一个老的broker集群(还是0.10.0.1版本)是否还能使用zero copy?kafka版本是向下兼容的吗,还是consumer和broker版本必须一致才能使用zero copy这样的特性。
作者回复: 还是consumer和broker版本必须一致才能使用zero copy这样的特性 --- 是的,否则就要在broker端做消息转换,这样消息对象会在jvm堆上重建,丧失了zero copy特性。
2020-01-1210 - wgcris你好,请教您一个问题,关于leader均衡,如果集群规模比较大,一次leader均衡会有上千个partition要进行leader切换,这会导致客户端很长时间不可用,目前针对这个场景有没有一些比较成熟的解决方案?
作者回复: 关闭自动leader均衡,手动调整leader迁移是目前比较好的做法
2019-11-0729 - 外星人你好,一个broker建议最多存放多少个topic partition啊?这个个数和broker 的性能有啥关系吗?
作者回复: 没有一定之规。不过据官网文章,单broker最多能承受2000个分区,这个和性能还是有很大关系的。毕竟分区数越多,物理IO性能就可能越差
2019-09-0137 - lmtoo怎么查询linux是否开启了atime
作者回复: mount -l,默认是开启的,如果发现noatime则是关闭的。Linux 2.6.30引入了relatime。有了relatime,atime的更新时机被缩小了,如果atime=mtime就不会被更新了。
2019-08-2927 - 小鱼关于zero copy那块,是不是仅针对consumer端而言呢?还是说,producer版本与broker不一致时,也会降低性能?
作者回复: "producer版本与broker不一致时,也会降低性能" --- 不会的
2019-08-296 - ban老师,为什么测试 Console Consume读取比较老的数据,新的数据为什么会写入磁盘?这里不懂,Consume只是读取怎么会影响到写入
作者回复: 操作系统会被最近读取的page缓存起来,所以会“污染”页缓存
2019-09-1425 - ProgramGeek老师,最近遇到一个问题,在kafka加入SASL ACL中,生产的时候出现需要给事务ID赋权,那有个问题在有多生产者的情况下,同一主题下的事务ID能一样吗?如果ID不能一样,那我在加入kafka的时候每次都需要赋权怎么办
作者回复: 如果你并没有共享KafkaProducer实例,那么每个生产者最好设置成不同的transactional.id。2.0版本开始支持ACL前缀,可以用kafka-acls.sh --resource-pattern-type prefixed 一试
2019-08-304 - 张振宇老师,发现kafka的log文件比较大,执行rm删除log后df- h还未释放空间。 然后lsof -n /data |grep deleted 发现查出来的进程是kafka的进程号,也不敢直接kill 想咨询下老师这种情况如何处理,有没更优雅的方式来优化。
作者回复: hmmm... 直接删除log文件的做法非常不优雅。。。 如果你要删除至少也要关闭Kafka集群之后再这么做。 最优雅的方式还是通过删除topic的命令来执行
2020-04-1423 - SAM(陈嘉奇)老师你好我查到的swappiness的解释是这样的: This control is used to define how aggressive (sic) the kernel will swap memory pages. Higher values will increase aggressiveness, lower values decrease the amount of swap. A value of 0 instructs the kernel not to initiate swap until the amount of free and file-backed pages is less than the high water mark in a zone. 按这个意思swap = 0的意思应该不是不交换。
作者回复: 嗯嗯,我看到那篇文章了。似乎swappiness作用的真实性有待确认。
2020-03-053