3.kafka 重要参数和性能测试
Posted 文大侠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.kafka 重要参数和性能测试相关的知识,希望对你有一定的参考价值。
参数配置
不同的参数对集群性能影响很大,除了之前基础与安装中指定的参数,还有一些中要的参数值得注意,包括如下
Broker参数
- Topic 管理
auto.create.topics.enable
:是否允许自动创建 Topic,一般设为false,允许集群管理员统一分配和管理。
unclean.leader.election.enable
:是否允许 Unclean Leader 选举,一般设为false,不允许落后太多的副本参与选举。
auto.leader.rebalance.enable
:是否允许定期进行 Leader 选举,一般设为false。设为true,则间隔一段时间换Leader,会导致不必要的拷贝IO。
- 数据留存时间
log.retention.{hour|minutes|ms}
:控制一条消息数据被保存多长时间,ms/minutes/hour优先级依次降低。一般设置hour,log.retention.hour=168表示默认保存 7天,自动删除7天前的数据。
log.retention.bytes
:指定 Broker 为消息保存的总磁盘容量大小。默认-1,表示无限制。一般用在多租户Kafka集群上,防止恶意过度使用你资源,和留存时间参数满足任何一个就会开始删除消息。
- 消息大小
message.max.bytes
:控制 Broker 能够接收的最大消息大小,默认的 1000012 太少了,还不到 1MB,一般要根据自己业务相应调大。
Topic参数
允许在Topic创建时覆盖部分Broker端指定参数,在多租户Kakfa中尤其适用。常用的数据留存时间和消息大小和上述配置相同,不再赘述。
JVM参数
Kafka基于Scala,最终运行在JVM上,一般需要调节的参数如下:
-
堆大小
默认1G较小,建议JVM 堆大小设置成 6GB。 -
GC方式
建议至少使用JDK8,CPU 资源非常充裕,建议使用CMS 收集器(-XX:+UseCurrentMarkSweepGC)
,否则使用默认吞吐量收集器(-XX:+UseParallelGC)
。也可以考虑使用G1收集器(-XX:+UseG1GC)
。
一般通过配置如下环境变量指定如上两个参数:
export KAFKA_HEAP_OPTS=--Xms6g --Xmx6g
export KAFKA_JVM_PERFORMANCE_OPTS= -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true
操作系统参数
OS参数其实适合于大部分Java项目调整,只是为了规避一些常见的不必要的系统配置,如下
- 文件描述符限制
尽量调大,如ulimit -n 1000000,避免“Too many open files”错误
- 文件系统类型
ext3、ext4 或 XFS均可
- Swappiness
swappniess 配置成一个接近 0 但不为 0 的值,比如1,减少Swap的使用,同时保留内存耗尽预警功能。
- 提交时间
最后是提交时间或者说是 Flush 落盘时间。向 Kafka 发送数据并不是真要等数据被写入磁盘才会认为成功,而是只要数据被写入到操作系统的页缓存(Page Cache)上就可以了,随后操作系统根据 LRU 算法会定期将页缓存上的“脏”数据落盘到物理磁盘上。这个定期就是由提交时间来确定的,默认是 5 秒。一般情况下我们会认为这个时间太频繁了,可以适当地增加提交间隔来降低物理磁盘的写操作。
性能测试
kafka自带测试性能测试脚本,在集群部署完后需要压测来评估实际性能,也用在评估单个Partition的实际TPS,来确认具体的分区方案,常用脚本如下:
kafka-producer-perf-test.sh
kafka-consumer-perf-test.sh
写入
$ bin/kafka-producer-perf-test.sh --topic test-topic --num-records 10000000 --throughput -1 --record-size 1024 --producer-props bootstrap.servers=kafka-host:port acks=-1 linger.ms=2000 compression.type=lz4
消费
$ bin/kafka-consumer-perf-test.sh --broker-list kafka-host:port --messages 10000000 --topic test-topic
原创,转载请注明来自
以上是关于3.kafka 重要参数和性能测试的主要内容,如果未能解决你的问题,请参考以下文章