Kafka 基本配置及性能优化
这里主要是 Kafka 集群基本配置的相关内容。
硬件要求
Kafka 集群基本硬件的保证
OS 调优
-
OS page cache:应当可以缓存所有活跃的 Segment(Kafka 中最基本的数据存储单位);
-
fd 限制:100k+;
-
禁用 swapping:简单来说,swap 作用是当内存的使用达到一个临界值时就会将内存中的数据移动到 swap 交换空间,但是此时,内存可能还有很多空余资源,swap 走的是磁盘 IO,对于内存读写很在意的系统,最好禁止使用 swap 分区;
-
TCP 调优;
-
JVM 配置
-
JDK 8 并且使用 G1 垃圾收集器;
-
至少要分配 6-8 GB 的堆内存。
-
Kafka 磁盘存储
-
使用多块磁盘,并配置为 Kafka 专用的磁盘;
-
JBOD vs RAID10;
-
JBOD(Just a Bunch of Disks,简单来说它表示一个没有控制软件提供协调控制的磁盘集合,它将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘,数据是按序存储,它的性能与单块磁盘类似)
-
JBOD 的一些缺陷:
-
任何磁盘的损坏都会导致异常关闭,并且需要较长的时间恢复;
-
数据不保证一致性;
-
多级目录;
-
-
社区也正在解决这么问题,可以关注 KIP 112、113:
-
必要的工具用于管理 JBOD;
-
自动化的分区管理;
-
磁盘损坏时,Broker 可以将 replicas 迁移到好的磁盘上;
-
在同一个 Broker 的磁盘间 reassign replicas;
-
-
RAID 10 的特点:
-
可以允许单磁盘的损坏;
-
性能和保护;
-
不同磁盘间的负载均衡;
-
高命中来减少 space;
-
单一的 mount point;
-
-
文件系统:
-
使用 EXT 或 XFS;
-
SSD;
-
基本的监控
Kafka 集群需要监控的一些指标,这些指标反应了集群的健康度。
-
CPU 负载;
-
Network Metrics;
-
File Handle 使用;
-
磁盘空间;
-
磁盘 IO 性能;
-
GC 信息;
-
ZooKeeper 监控。
Kafka replica 相关配置及监控
Kafka Replication
-
Partition 有两种副本:Leader,Follower;
-
Leader 负责维护 in-sync-replicas(ISR)
-
replica.lag.time.max.ms
:默认为10000,如果 follower 落后于 leader 的消息数超过这个数值时,leader 就将 follower 从 isr 列表中移除; -
num.replica.fetchers
,默认为1,用于从 leader 同步数据的 fetcher 线程数; -
min.insync.replica
:Producer 端使用来用于保证 Durability(持久性);
-