一、操作系统层面需关注的指标
ulimit -n命令将文件描述符限制调整为65535或更高,避免因连接数超过限制导致服务拒绝请求。vm.swappiness=1(低值),减少系统使用swap分区的概率,避免磁盘I/O成为性能瓶颈;vm.dirty_background_ratio≤10(后台刷脏页的阈值)、vm.dirty_ratio≤60~80(触发强制刷脏页的阈值),优化内存与磁盘的写入同步,平衡性能与数据安全性;net.core.rmem_default(接收缓冲区默认大小)、net.core.rmem_max(接收缓冲区最大值)、net.core.wmem_default(发送缓冲区默认大小)、net.core.wmem_max(发送缓冲区最大值),提升网络数据传输效率。-Xmx4G -Xms4G),减少磁盘交换;同时,Kafka依赖操作系统页缓存,无需分配过多堆内存给JVM。二、Kafka Broker配置需关注的指标
broker.id:集群中每个Broker的唯一标识(正整数),若IP变更但broker.id不变,不影响消费者消息消费;listeners:Broker监听的地址与端口(如PLAINTEXT://your.server.ip:9092),用于接收客户端连接;advertised.listeners:向客户端广播的地址与端口(如PLAINTEXT://public.ip:9092),确保客户端能正确访问Broker;log.dirs:日志存储目录(如/data/kafka-logs),建议使用多个不同磁盘的目录(逗号分隔),提升磁盘并行写入性能。num.partitions:主题的初始分区数,需根据消费者线程数(建议与分区数相等)或预期吞吐量设置(如每分区约10MB/s吞吐量),分区数越多并行处理能力越强,但会增加复制延迟;default.replication.factor:主题的默认副本因子(如3),确保数据冗余(至少3个副本),提高可靠性;min.insync.replicas:写操作需确认的最小副本数(如2),平衡数据可靠性与写入性能(若设为2,需至少2个副本确认才算成功)。num.network.threads:处理网络请求的线程数(建议为CPU核心数的2/3),负责接收客户端请求并转发至对应线程;num.io.threads:处理磁盘I/O的线程数(建议为CPU核心数的1~2倍),负责消息写入磁盘、读取磁盘等操作;num.replica.fetchers:副本拉取线程数(建议为CPU核心数的1/3),负责从Leader副本拉取数据至Follower副本。batch.size:生产者批量发送消息的字节数(建议1MB),减少网络请求次数,提高吞吐量;linger.ms:生产者发送前的等待时间(建议100ms以上),允许更多消息加入批次,平衡延迟与吞吐量;compression.type:消息压缩类型(如lz4),减少网络传输数据量(约30%~50%压缩率),提高吞吐量;buffer.memory:生产者内存缓冲区大小(建议64MB以上),用于暂存未发送的消息,避免因缓冲区满导致阻塞;fetch.min.bytes:消费者单次获取的最小消息字节数(建议1MB),减少网络请求次数;fetch.max.wait.ms:消费者获取消息的最大等待时间(建议1000ms),平衡延迟与吞吐量。log.segment.bytes:日志段文件大小(建议1GB),当日志段达到该大小后会滚动生成新文件,便于日志清理与压缩;log.retention.hours:日志保留时间(建议168小时,即7天),根据磁盘容量调整,避免磁盘空间耗尽;message.max.bytes:单条消息最大字节数(建议10MB),超过该大小的请求会被拒绝,需与生产者max.request.size参数匹配。三、集群与高可用配置需关注的指标
zookeeper.connect:ZooKeeper集群地址(如zk1:2181,zk2:2181,zk3:2181),Kafka依赖ZooKeeper实现集群管理(如Broker注册、Topic元数据存储、Leader选举),需确保连接稳定;min.insync.replicas:需与副本因子配合设置(如副本因子为3时,min.insync.replicas设为2),确保写操作的可靠性(只有ISR中的副本确认才算成功),避免因副本滞后导致数据丢失。