美文网首页
Kafka集群参数配置(二)

Kafka集群参数配置(二)

作者: 我可能是个假开发 | 来源:发表于2023-01-18 23:18 被阅读0次

一、Topic 参数

每个 Topic 都能设置自己的参数值,这就是所谓的 Topic 级别参数

1.retention.ms

规定了该 Topic 消息被保存的时长。默认是 7 天,即该 Topic 只保存最近 7 天的消息。一旦设置了这个值,它会覆盖掉 Broker 端的全局参数值。

2.retention.bytes

规定了要为该 Topic 预留多大的磁盘空间。和全局参数作用相似,这个值通常在多租户的 Kafka 集群中会有用武之地。当前默认值是 -1,表示可以无限使用磁盘空间。

3.max.message.bytes

能处理的消息大小;决定 Kafka Broker 能够正常接收该 Topic 的最大消息大小。

Topic 级别参数会覆盖全局 Broker 参数的值

二、设置Topic级别参数

1.创建 Topic 时进行设置

用以下命令来创建 Topic:

bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic transaction --partitions 1 --replication-factor 1 --config retention.ms=15552000000 --config max.message.bytes=5242880

--config:在 config 后面指定了想要设置的 Topic 级别参数。

2.修改 Topic 时设置

自带的命令kafka-configs来修改 Topic 级别参数:

bin/kafka-configs.sh --zookeeper localhost:2181 --entity-type topics --entity-name transaction --alter --add-config max.message.bytes=10485760

建议使用第二种方式来设置。

三、JVM 参数

先说说 Java 版本,有条件的话至少使用 Java 8 。

1.堆大小

JVM 堆大小设置成 6GB,这是目前业界比较公认的一个合理值。

2.垃圾回收器的设置

Java 7

  • 如果 Broker 所在机器的 CPU 资源非常充裕,建议使用 CMS 收集器。启用方法是指定-XX:+UseCurrentMarkSweepGC
  • 否则,使用吞吐量收集器。开启方法是指定-XX:+UseParallelGC

Java 8:
可以手动设置使用 G1 收集器。在没有任何调优的情况下,G1 表现得要比 CMS 出色,主要体现在更少的 Full GC,需要调整的参数更少等,所以使用 G1 就好了。

四、设置JVM 参数

  • KAFKA_HEAP_OPTS:指定堆大小。
  • KAFKA_JVM_PERFORMANCE_OPTS:指定 GC 参数。

在启动 Kafka Broker 之前,先设置上这两个环境变量:

$> 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
$> bin/kafka-server-start.sh config/server.properties

五、操作系统参数

1.文件描述符限制

通常情况下将它设置成一个超大的值是合理的做法,比如ulimit -n 1000000

设置这个参数不重要,但不设置的话后果很严重,比如你会经常看到“Too many open files”的错误。

2.文件系统类型

文件系统指的是如 ext3、ext4 或 XFS 这样的日志型文件系统。
XFS 的性能要强于 ext4,所以生产环境最好还是使用 XFS。

3.Swappiness

1.设置成 0,当物理内存耗尽时,操作系统会触发 OOM killer 这个组件,它会随机挑选一个进程然后 kill 掉,即根本不给用户任何的预警。

2.设置成一个比较小的值,当开始使用 swap 空间时,至少能够观测到 Broker 性能开始出现急剧下降,从而给你进一步调优和诊断问题的时间。

建议:将 swappniess 配置成一个接近 0 但不为 0 的值,比如 1。

4.提交时间

Flush 落盘时间。
向 Kafka 发送数据并不是真要等数据被写入磁盘才会认为成功,而是只要数据被写入到操作系统的页缓存(Page Cache)上就可以了,随后操作系统根据 LRU 算法会定期将页缓存上的“脏”数据落盘到物理磁盘上。这个定期就是由提交时间来确定的,默认是 5 秒。一般情况下我们会认为这个时间太频繁了,可以适当地增加提交间隔来降低物理磁盘的写操作。

如果在页缓存中的数据在写入到磁盘前机器宕机了,数据就丢失了。但鉴于 Kafka 在软件层面已经提供了多副本的冗余机制,因此这里稍微拉大提交间隔去换取性能还是一个合理的做法。

极客时间《Kafka 核心技术与实战》学习笔记Day4 - http://gk.link/a/11UOV

相关文章

  • Kafka集群参数配置(二)

    一、Topic 参数 每个 Topic 都能设置自己的参数值,这就是所谓的 Topic 级别参数 1.retent...

  • kafka调优参数设置

    下面将以Kafka集群设计的各方面参数进行说明:broker端口参数topic级别参数GC配置参数JVM参数OS参...

  • Kafka 最佳实践

    Kafka 基本配置及性能优化 这里主要是 Kafka 集群基本配置的相关内容。 硬件要求 Kafka 集群基本硬...

  • Kafka集群参数配置(一)

    一、Broker 端参数 1.针对存储信息: log.dirs:指定Broker 需要使用的若干个文件目录路径。没...

  • Kafka初识

    问题一 写出增加Kafka的Partition命令 问题二 列出配置Kafka删除日志的配置参数 问题三 Kafk...

  • Kafka相关文集

    Kafka 运维 kafka集群配置 kafka的安装(包括zookeeper) 原理及使用 Kafka之sync...

  • Kafka+Spark Streaming实现单词数量的实时统计

    1. 准备工作 Kafka集群的搭建可以参考 Kafka集群搭建与配置Spark集群的搭建可以参考Hadoop+H...

  • kakfa配置

    常用配置: 参考资料Kafka集群部署

  • Kafka集群环境配置

    Kafka集群环境配置 1 环境准备 1.1 集群规划 1.2 jar包下载 安装包:kafka_2.11-0.8...

  • Kafka集群搭建

    Java环境 zookeeper集群 Kafka集群 追加如下配置 最终修改结果 配置其他两台机器 测试

网友评论

      本文标题:Kafka集群参数配置(二)

      本文链接:https://www.haomeiwen.com/subject/oivfhdtx.html