更新时间:2025-08-21 GMT+08:00

诊断Kafka消息积压

在消息处理过程中,如果客户端的消费速度跟不上服务端的发送速度,未处理的消息会越来越多,这部分消息就被称为堆积消息。消息没有被及时消费就会产生消息堆积,从而会造成消息消费延迟。

分布式消息服务Kafka版在控制台提供了消息积压诊断功能,如果消息存在堆积,诊断后会生成诊断记录,诊断记录显示消息堆积可能的原因、受影响的分区或者broker,以及解决消息堆积的建议。

介绍视频

前提条件

  • 已创建Kafka实例,并且消费组正在以非assign方式消费消息中。
  • 一个消费组正在诊断中时,无法对其他消费组进行诊断,也无法对此消费组消费的其他Topic进行诊断。

操作流程

图1 消息积压诊断流程图

步骤一:诊断前检查

  1. 登录Kafka控制台
  2. 在管理控制台左上角单击,选择Kafka实例所在的区域。
  3. 单击Kafka实例的名称,进入实例详情页面。
  4. 在左侧导航栏选择“分析与诊断 > 消息积压诊断”,进入消息积压诊断页面。
  5. 选择需要诊断的消费组名称和Topic名称,单击“诊断前检查”。

    检查成功后,在页面上方显示“预检查成功”,并显示内存使用率、CPU利用率、分区订阅关系、消息积压情况和流量突增情况的检查结果。

    图2 诊断前检查

    Topic所有分区的总消息堆积数小于2000时,“消息积压情况”显示无消息积压,此时无法进行消息积压诊断。“消息积压情况”显示有消息积压,并且消费组正在以非assign方式消费消息中,才能进行积压诊断

步骤二:开始诊断

  1. 单击“开始诊断”,在“诊断记录”区域,显示一条“状态”为“诊断中”的记录。

    当“状态”变为“诊断成功”时,表示消息积压诊断已经完成。

  2. 在诊断记录所在行,单击“查看详情”,进入“诊断详情”页面。
  3. 在页面顶部查看消息组异常项、失败项和正常项的数量。在“诊断维度”区域,单击包含异常项的维度名称,例如:重平衡,查看导致异常的可能原因、受影响的分区或者broker,以及解决消息堆积的建议。

    图3 诊断详情

相关文档

如果您希望通过API查看诊断报告详情,请参考查询诊断报告详情