查看消费状态

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

注意事项

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

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

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

查看Topic被订阅的Group

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

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

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

  4. Topic管理页面,找到目标Topic,在其操作列,选择更多 > 订阅关系

    Topic 详情页面的订阅关系页签,显示所有订阅该Topic的Group订阅关系

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

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

    消费详情

    参数

    说明

    分区 ID

    该Topic分区的ID。

    客户端

    实时订阅该Topic的在线Consumer。

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

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

    最大位点

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

    消费位点

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

    堆积量

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

    重要

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

查看Group订阅的Topic

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

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

  3. Group 管理页面,找到目标Group,在其操作列,选择更多 > 消费状态

    Group 详情消费状态页签,显示该Group订阅的所有Topic以及各个Topic的堆积量消费状态

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

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

    参数解释请参见上文。

常见问题

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

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

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

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

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

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

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

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

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

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

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

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

相关文档