千家信息网

Kafka性能调优

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,Kafka的配置详尽、复杂,想要进行全面的性能调优需要掌握大量信息,这里只记录一下我在日常工作使用中走过的坑和经验来对kafka集群进行优化常用的几点。1.JVM的优化java相关系统自然离不开JVM
千家信息网最后更新 2025年12月03日Kafka性能调优

Kafka的配置详尽、复杂,想要进行全面的性能调优需要掌握大量信息,这里只记录一下我在日常工作使用中走过的坑和经验来对kafka集群进行优化常用的几点。

1.JVM的优化

java相关系统自然离不开JVM的优化。首先想到的肯定是Heap Size的调整。

vim bin/kafka-server-start.sh     调整KAFKA_HEAP_OPTS="-Xmx16G -Xms16G"的值

推荐配置:一般HEAP SIZE的大小不超过主机内存的50%。

2.网络和ios操作线程配置优化:

# broker处理消息的最大线程数num.network.threads=9# broker处理磁盘IO的线程数num.io.threads=16

推荐配置:

num.network.threads主要处理网络io,读写缓冲区数据,基本没有io等待,配置线程数量为cpu核数加1。

num.io.threads主要进行磁盘io操作,高峰期可能有些io等待,因此配置需要大些。配置线程数量为cpu核数2倍,最大不超过3倍。

3.socket server可接受数据大小(防止OOM异常):

socket.request.max.bytes=2147483600

推荐配置:

根据自己业务数据包的大小适当调大。这里取值是int类型的,而受限于java int类型的取值范围又不能太大:

java int的取值范围为(-2147483648~2147483647),占用4个字节(-231次方到231次方-1,不能超出,超出之后报错:org.apache.kafka.common.config.ConfigException: Invalid value 8589934592 for configuration socket.request.max.bytes: Not a number of type INT。

4.log数据文件刷盘策略

# 每当producer写入10000条消息时,刷数据到磁盘log.flush.interval.messages=10000# 每间隔1秒钟时间,刷数据到磁盘log.flush.interval.ms=1000

推荐配置:

为了大幅度提高producer写入吞吐量,需要定期批量写文件。一般无需改动,如果topic的数据量较小可以考虑减少log.flush.interval.ms和log.flush.interval.messages来强制刷写数据,减少可能由于缓存数据未写盘带来的不一致。推荐配置分别message 10000,间隔1s。

5.日志保留策略配置

# 日志保留时长log.retention.hours=72# 段文件配置log.segment.bytes=1073741824

推荐配置:

日志建议保留三天,也可以更短;段文件配置1GB,有利于快速回收磁盘空间,重启kafka加载也会加快(kafka启动时是单线程扫描目录(log.dir)下所有数据文件)。如果文件过小,则文件数量比较多。

6.replica复制配置

num.replica.fetchers=3replica.fetch.min.bytes=1replica.fetch.max.bytes=5242880

推荐配置:

每个follow从leader拉取消息进行同步数据,follow同步性能由这几个参数决定,分别为:

拉取线程数(num.replica.fetchers):fetcher配置多可以提高follower的I/O并发度,单位时间内leader持有更多请求,相应负载会增大,需要根据机器硬件资源做权衡,建议适当调大;

最小字节数(replica.fetch.min.bytes):一般无需更改,默认值即可;

最大字节数(replica.fetch.max.bytes):默认为1MB,这个值太小,推荐5M,根据业务情况调整

最大等待时间(replica.fetch.wait.max.ms):follow拉取频率,频率过高,leader会积压大量无效请求情况,无法进行数据同步,导致cpu飙升。配置时谨慎使用,建议默认值,无需配置。

7.分区数量配置

num.partitions=5

推荐配置:

默认partition数量1,如果topic在创建时没有指定partition数量,默认使用此值。Partition的数量选取也会直接影响到Kafka集群的吞吐性能,配置过小会影响消费性能,建议改为5。

配置 数据 推荐 数量 文件 线程 磁盘 性能 最大 建议 大小 字节 日志 时间 同步 处理 调整 适当 业务 情况 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 根据数据库形成建模视图 服务器操作系统有哪些 杭州一站式网络技术服务费 打印机服务器怎么下载驱动 软件开发属于本科还是专科 个人承接手机软件开发 网络安全保护好自己的信息 网络安全维护和网络运营累吗 太原网络安全工程师自学 浅谈网络安全800字 网络安全我来说心得体会 录像机不能连接服务器 redis是缓存数据库 希格玛数据库 百度服务器为什么在美国 人行网络安全处长余 微信小程序服务器管理账号 阿克苏联想服务器维保公司 学习软件开发教程 四川工控软件开发哪家专业 服务器存储里的其他怎么清理 数据库如何循环取月表数据 亿联网络技术竞争力 网络安全工程师跟软件工程师 开局送智蛙的服务器 网络安全审计考证报名 数据库系统安全性的主要技术 重庆渝北生鲜系统软件开发 深圳市网络安全监察分局 关于计算机数据库方面的图片
0