多消费者场景下提升RedPanda消费者拉取吞吐量的问询
RedPanda Broker 吞吐量优化问题
环境基础配置
- 在3个K8s节点上部署3个带副本的RedPanda Broker,运行状态正常
- Broker集群共12个分区,存储数据量80GB
- 测试覆盖两种消息大小:4KB、200字节
- 消费者Pod与RedPanda Broker位于不同节点组,节点配置16核CPU、32Gbps带宽,资源充足
测试场景与结果
场景1:单消费组拉取全部分区
单个消费组消费者通过多次拉取获取全部12个分区数据:
- 4KB消息:吞吐量约400MB/秒(约86,419条/秒)
- 200字节消息:吞吐量约823,043条/秒
场景2:多线程单分区消费
4个消费者分别运行在不同线程,每个消费者分配唯一单个分区(共拉取4个分区):
- 预期:每个消费者吞吐量不低于单消费者水平,整体性能线性提升
- 实际:每个消费者仅能达到100-200MB/秒,总吞吐量为400-600MB/秒,未达预期
场景3:多消费组/多Pod消费
无论是单Pod启动多个消费组消费者,还是多Pod各启动单个消费组消费者,均未实现吞吐量提升
消费者配置
消费者使用Java客户端,核心配置如下:
props.put(ConsumerConfig.FETCH_MAX_WAIT_MS_CONFIG, 100); props.put(ConsumerConfig.FETCH_MAX_BYTES_CONFIG, 4 * 1024 * 1_00_000); props.put(ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG, 4 * 1024 * 1_00_000); props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, 1_000_000); props.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 10_000);
注:消费者侧未配置任何TCP参数
RedPanda Broker节点规格
每个RedPanda Broker部署在GCP K8s集群中,实例规格为c2-standard-16:
- vCPU:16核
- 内存:64 GB
- CPU厂商:Intel
- CPU平台:Intel Cascade Lake
- CPU基础频率:3.1 GHz
- CPU睿频:3.8 GHz
- CPU最大睿频:3.9 GHz
- 网络带宽:32 Gbps
需求
寻求RedPanda Broker端可优化吞吐量的配置方案
内容的提问来源于stack exchange,提问作者Paweł Kamiński
相关产品推荐
相关产品推荐

