消息队列Kafka版的消费端从服务端拉取不到消息或者拉取消息缓慢

消息队列Kafka版的消费端从服务端拉取不到消息或者拉取消息缓慢

更新时间:2020-05-19 09:53:53

问题描述

Topic中有存量消息并且Consumer未消费到最新的位置,可能出现如下异常情况(尤其是通过公网消费时)。

  • 消费端从服务端拉取不到消息。
  • 消费端从服务端拉取消息时比较缓慢。

问题原因

问题原因可能有如下几点。

  • 实例的消费流量超过带宽峰值。
  • 实例的Topic中单个消息大小超过带宽峰值。
  • Consumer每次拉取的消息量超过带宽峰值。

解决方案

请参考如下步骤进行排查。如果您的实例是公网实例,则文中的带宽峰值替换为公网流量。

  1. 登录消息队列Kafka版的控制台,单击 监控报警,查看监控信息。关于如何查看或者设置实例的监控报警信息,请参阅监控报警
  2. 检查 实例消息消费流量 是否已经达到实例的带宽峰值。如果已经达到带宽峰值,您需要升级实例的带宽峰值。关于如何升级实例配置,请参阅升级实例配置
  3. 检查Topic中是否存在单个消息的大小超过带宽峰值的情况。如果存在,您可以升级实例的带宽峰值,或者减少单个消息的大小。关于如何减少单个消息的大小,请参阅变更消息配置
  4. 检查Consumer每次拉取的消息量是否超过带宽峰值。如果超过,可能造成拉取不到消息。您需要调整如下几个参数,减小每次消费的消息拉取量。
    • max.poll.records:每次拉取的最多消息数。
    • fetch.max.bytes:每次拉取的最大总字节(byte)数,需要小于带宽峰值。
    • max.partition.fetch.bytes:每个分区(Partition )每次拉取的最大总字节(byte)数。确保(max.partition.fetch.bytes) * (总订阅分区数) < 带宽峰值。

适用于

  • 消息队列Kafka版

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。