如何调整CentOS Kafka参数,轻松实现集群性能的飞跃式提升?
- 内容介绍
- 文章标签
- 相关推荐
痛点的观点是,为什么你的CentOS Kafka集群性能总达不到预期?怎么说呢,
很多运维在使用CentOS部署Kafka时常会遇到以下困扰:
- 消息吞吐量瓶颈。峰值流量时出现积压,
- 延迟波动大,消费端实时性受影响;
- 频繁的GC导致服务抖动,甚至出现OOM;
- 磁盘I/O成为限制因素,副本同步慢。
第一步先这方面。调整JVM参数
Kafka运行在JVM上,堆内存和垃圾回收策略直接决定吞吐量与稳定性。
-
打开环境变量文件:
vi /opt/kafka/bin/kafka-server-start.sh(或直接编辑kafka-env.sh -
添加或修改以下变量:
- 保存退出。
为什么这样设置?
- -Xmx/-Xms设为物理内存的一半,避免过度分配导致Swap。
- 至于-XX,+UseG1GC适用于大堆、低停顿场景。话说回来,
- 说到-XX。MaxGCPauseMillis=20目标把GC停顿控制在20 ms内,显著降低尾延迟。
从接下来来看。调整Broker主要配置
进入Kafka配置目录并编辑 /opt/kafka/config/server.properties
基本并行度参数
日志与刷写策略
网络监听与对外地址
:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT
inter.broker.listener.name = PLAINTEXT
num.network.listeners = 1 # 若使用多协议可相应增多
:程序内核参数调整
CentOS默认的TCP连接戒备较低,需增大以支持高并发生产者/使用者。
maxsynbacklog = 65535
net.ipv4.iplocalportrange = 1024 65535
net.ipv4.tcptwreuse = 1
net.ipv4.tcpfintimeout = 15
fs.file-max = 6815744 # 增加最大打开文件数
vm.maxmapcount = 65536 # 防止mmap失败
kernel.pid_max = 4194303 # 大规模集群防止PID耗尽
sysctl -p /etc/sysctl.conf
cat /proc/sys/net/core/somaxconn
echo never> /sys/kernel/mm/transparent_hugepage/enabled
ps -ef | grep kafka.Kafka | grep java
kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic
kafka-reassign-partitions.sh --bootstrap-server localhost:9092 --verify --topics-to-move-json-file topics.json
token|>后进行验证:
-
重启Broker**:
-
检查服务状态
sudo systemctl status kafka
-
查看端口监听
ss -tlnp \| grep :9�?�,�?�,�?�,�?�,�?�,�?�,话说回来,� ������������������� � � � � � � � � � � � �?,?,?,?,?,?,?
,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,. . . . . . . . . . . . .
。 sudo systemctl status kafka ss -tlnp \| grep :9�?�,�?�,�?�,�?�,�?�,�?�,话说回来,� ������������������� � � � � � � � � � � � �?,?,?,?,?,?,?
,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,. . . . . . . . . . . . .痛点的观点是,为什么你的CentOS Kafka集群性能总达不到预期?怎么说呢,
很多运维在使用CentOS部署Kafka时常会遇到以下困扰:
- 消息吞吐量瓶颈。峰值流量时出现积压,
- 延迟波动大,消费端实时性受影响;
- 频繁的GC导致服务抖动,甚至出现OOM;
- 磁盘I/O成为限制因素,副本同步慢。
第一步先这方面。调整JVM参数
Kafka运行在JVM上,堆内存和垃圾回收策略直接决定吞吐量与稳定性。
-
打开环境变量文件:
vi /opt/kafka/bin/kafka-server-start.sh(或直接编辑kafka-env.sh -
添加或修改以下变量:
- 保存退出。
为什么这样设置?
- -Xmx/-Xms设为物理内存的一半,避免过度分配导致Swap。
- 至于-XX,+UseG1GC适用于大堆、低停顿场景。话说回来,
- 说到-XX。MaxGCPauseMillis=20目标把GC停顿控制在20 ms内,显著降低尾延迟。
从接下来来看。调整Broker主要配置
进入Kafka配置目录并编辑 /opt/kafka/config/server.properties
基本并行度参数
日志与刷写策略
网络监听与对外地址
:9092
listener.security.protocol.map=PLAINTEXT:PLAINTEXT
inter.broker.listener.name = PLAINTEXT
num.network.listeners = 1 # 若使用多协议可相应增多
:程序内核参数调整
CentOS默认的TCP连接戒备较低,需增大以支持高并发生产者/使用者。
maxsynbacklog = 65535
net.ipv4.iplocalportrange = 1024 65535
net.ipv4.tcptwreuse = 1
net.ipv4.tcpfintimeout = 15
fs.file-max = 6815744 # 增加最大打开文件数
vm.maxmapcount = 65536 # 防止mmap失败
kernel.pid_max = 4194303 # 大规模集群防止PID耗尽
sysctl -p /etc/sysctl.conf
cat /proc/sys/net/core/somaxconn
echo never> /sys/kernel/mm/transparent_hugepage/enabled
ps -ef | grep kafka.Kafka | grep java
kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic
kafka-reassign-partitions.sh --bootstrap-server localhost:9092 --verify --topics-to-move-json-file topics.json
token|>后进行验证:
-
重启Broker**:
-
检查服务状态
sudo systemctl status kafka
-
查看端口监听
ss -tlnp \| grep :9�?�,�?�,�?�,�?�,�?�,�?�,话说回来,� ������������������� � � � � � � � � � � � �?,?,?,?,?,?,?
,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,. . . . . . . . . . . . .
。 sudo systemctl status kafka ss -tlnp \| grep :9�?�,�?�,�?�,�?�,�?�,�?�,话说回来,� ������������������� � � � � � � � � � � � �?,?,?,?,?,?,?
,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,. . . . . . . . . . . . .
