更新时间:2024-07-31 GMT+08:00

诊断Kafka消息积压

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

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

前提条件

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

操作流程

图1 消息积压诊断流程图

步骤一:诊断前检查

  1. 登录管理控制台。
  2. 在管理控制台左上角单击,选择区域。

    请选择Kafka实例所在的区域。

  3. 在管理控制台左上角单击,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
  4. 单击Kafka实例的名称,进入实例详情页面。
  5. 在左侧导航栏选择“分析与诊断 > 消息积压诊断”,进入消息积压诊断页面。
  6. 选择需要诊断的消费组名称和Topic名称,单击“诊断前检查”。

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

    图2 诊断前检查

    “消息积压情况”显示无消息积压时,无法进行消息积压诊断。显示有消息积压,并且消费组正在以非assign方式消费消息中,才能进行积压诊断

步骤二:开始诊断

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

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

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

    图3 诊断详情