查看消费状态

当Kafka出现消费堆积、倾斜、流量被限流等异常时,您可以查看Group和Topic之间的订阅关系,获取Topic各个分区的消费进度,了解消息的堆积总量,及时调整业务、预防风险。

注意事项

  • 建议一个消费组不要订阅超过三个Topic,避免消息堆积。

  • 当您使用assign消费模式时,请及时手动提交消费位点,避免实际已消费消息,却由于未提交位点显示消息堆积。

  • 若堆积量较大,请检查消息消费速率和生产速率,若前者小于后者,建议您通过提升消费能力的方式来缓解。

查看Topic被订阅的Group

  1. 登录云消息队列 Kafka 版控制台,在概览页面的资源分布区域,选择地域。

  2. 实例列表页面,单击目标实例名称。

  3. 在左侧导航栏,单击Topic管理

  4. Topic管理页面,单击目标Topic名称

  5. Topic 详情页面,单击订阅关系页签。

    订阅当前 Topic 的在线 Group 的列表中,显示所有订阅该Topic的Group订阅关系

  6. 订阅当前 Topic 的在线 Group 的列表中,找到目标Group,在其右侧操作列,单击消费详情

    在消费详情列表,显示该Topic各个分区的消费详情。

    image

    参数

    说明

    分区 ID

    该Topic分区的ID。

    客户端

    实时订阅该Topic的在线Consumer。

    说明
    • 取值格式为<Client ID>_/<IP>

    • 非在线消费端则无法查看客户端信息。

    最大位点

    该Topic在当前分区下的最大消息消费位点。

    消费位点

    该Topic在当前分区下的消息消费位点。

    堆积量

    当前分区下的消息堆积总量,即最大位点减去消费位点的值。

    重要

    堆积总量是一个关键指标,如果发现堆积总量较大,则应用消费端可能产生了阻塞,或者消费速度跟不上生产速度。此时需要分析消费端的运行状况,提升消费速度。更多信息,请参见重置消费位点

查看Group订阅的Topic

  1. 实例列表页面,单击目标实例名称。

  2. 在左侧导航栏,单击Group 管理

  3. Group 管理页面,单击目标Group ID

  4. Group 详情页面,单击消费状态页签。

    列表中,显示该Group订阅的所有Topic以及各个Topic的堆积量消费状态

  5. Topic列表,找到目标Topic,在其右侧操作列,单击消费详情

    消费详情列表,显示该Group在相应Topic的各个分区的消费详情。image

    参数解释请参见上文。

常见问题

为什么Kafka分区消息堆积,下游消费却无异常?

下游可能采用了assign消费模式,位点是您自己管理的。这种情况下虽然显示了堆积,实际上您可能已经消费了,但是没有提交位点。建议您及时手动提交位点解决消息堆积问题。

消息消费速率小于生产速率导致消息堆积时,如何增加消费能力?

可以通过提升消费能力的方式来缓解,有以下两种方案:

  • 增加Consumer实例个数。可以在进程内直接增加(需要保证每个实例对应一个线程),也可以部署多个消费实例进程。需要注意的是,实例个数超过分区数量后就不再能提高速度,否则将会有消费实例不工作。

  • 增加消费线程。更多信息,请参见提高消费速度

有消息堆积就一定是出现问题了吗?

不一定。一般分为以下三种情况:

  • 最近消费时间与当前时间接近,并且堆积量保持在一个稳定的数值之间波动,没有持续扩大说明客户端一直在拉取最新消息,没有消息堆积,属于正常情况。

  • 堆积量逐步扩大,并且消息位点一直不变客户端的消费线程因为某些原因卡住,没有继续消费,也没有继续向服务端提交位点,属于异常情况,即消息的确堆积了。

  • 堆积量逐步扩大,同时消费位点在前进说明客户端还在消费中,但是消息的消费速度慢于消息的发送速度,建议提高消费速度。

更多信息,请参见使用云消息队列 Kafka 版时出现消息堆积

相关文档