tencent cloud

消息队列 CKafka 版

动态与公告
新功能发布记录
Broker 版本升级记录
公告
产品简介
TDMQ 产品系列介绍与选型
什么是消息队列 CKafka 版
产品优势
应用场景
技术架构
产品系列介绍
开源 Kafka 版本支持说明
与开源 Kafka 对比
高可用
使用限制
地域和可用区
相关云服务
产品计费
计费概述
价格说明
计费示例
按小时付费转包年包月
续费说明
查看消费明细
欠费说明
退费说明
快速入门
入门流程指引
准备工作
VPC 网络接入
公网域名接入
用户指南
使用流程指引
配置账号权限
创建实例
配置 Topic
连接实例
管理消息
管理消费组
管理实例
变更实例规格
配置限流
配置弹性伸缩策略
配置高级特性
查看监控和配置告警
使用连接器同步数据
实践教程
集群资源评估
客户端实践教程
日志接入
开源生态对接
替换支撑路由(旧)
迁移指南
迁移方案概述
使用开源工具迁移集群
故障处理
Topic 相关
客户端相关
消息相关
API 参考
History
Introduction
API Category
Making API Requests
Other APIs
ACL APIs
Instance APIs
Routing APIs
DataHub APIs
Topic APIs
Data Types
Error Codes
SDK 参考
SDK 概述
Java SDK
Python SDK
Go SDK
PHP SDK
C++ SDK
Node.js SDK
连接器相关 SDK
安全与合规
权限管理
网络安全
删除保护
事件记录
云 API 审计
常见问题
实例相关
Topic 相关
Consumer Group 相关
客户端相关
网络问题
监控相关
消息相关
服务协议
服务等级协议
联系我们
词汇表
文档消息队列 CKafka 版故障处理客户端相关客户端生产消息进入到阻塞状态

客户端生产消息进入到阻塞状态

PDF
聚焦模式
字号
最后更新时间: 2026-01-20 16:21:51

问题概述

客户端生产消息进入堵塞状态,核心原因是消息发送不出去,或者发送的速度小于生产的速度。
如果是发送不出去,有 time out 的提示,可以先使用命令行进行生产消费,查看集群基本性能。参见 命令行生产消费
如果是发送的速度小于生产速度,有三种原因:
生产者的实例太少,即单个生产者的生产性能是有上限的,如果生产者的数量太少,流量太大,可能会导致发送堵塞。
流量太大,Topic 的分区数太少,导致写入并行度不够。
服务的质量有问题,例如网络质量下降,Broker 负载升高,客户端负载升高(例如客户端发生了 GC)会导致客户端发送到服务端的整体耗时上升,导致生产速率下降。从而导致客户端本地的 buffer 堆积,出现阻塞。

可能原因

1. 如果是专业版实例,可以在控制台查看高级监控,观察服务端的整体负载情况,如请求队列深度,生产消费的服务端耗时等。来确认服务端是否有性能问题。如果是标准版实例,可以 提交工单 查看这些指标。



2. 排查客户端负载,如本地机器的 CPU,内存情况(如果是 Java 客户端,重点关注 GC 情况)。
3. 如果是偶尔出现阻塞状况,需要排查本地网络是否有波动。特别是容器网络环境下,需要着重关注。
4. 分析生产者的数量是否过少,可以从单机的流量来分析。如果单机吞吐的流量较大,而生产者又是单线程发送,则需要关注。

解决方法

可以通过以下方法尝试解决问题:
1. 当生产消息的速度比 Sender 线程发送到 Broker 速度快,导致 buffer.memory 配置的内存用完时会阻塞生产者 send 操作,该参数设置最大的阻塞时间。如果需要更大的send buffer,可以通过调大 buffer.memory,buffer.memory 的默认值是 32MB。
# 最大阻塞时间
max.block.ms=60000
# 配置生产者用来缓存消息等待发送到 Broker 的内存。用户要根据生产者所在进程的内存总大小调节
buffer.memory=33554432
2. 如果 Topic 的流量较大,客户端发送的 Produce 实例较少,可以多起几个 Produce 实例来生产。例如:
KafkaProducer<byte[],byte[]> producer = new KafkaProducer<>(props);
3. 扩容集群的分区数。
4. 提交工单 申请平台协助处理。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈