消费端从服务端拉取不到消息或拉取消息缓慢

可能的原因包括消息流量达到网络带宽、单个消息大小超过网络带宽或者Consumer每次拉取的消息量超过网络带宽。

问题现象

Topic中有消息并且Consumer未消费到最新的位置,出现消费端从服务端拉取不到消息或拉取消息缓慢的情况(特别是公网消费时)。

可能原因

可能的原因包括:

  • 消费流量达到网络带宽。

  • 单个消息大小超过网络带宽。

  • Consumer每次拉取的消息量超过网络带宽。

    说明

    Consumer每次消息的拉取量受以下参数影响:

    • max.poll.records:每次拉取的最多消息数。

    • fetch.max.bytes:每次拉取的最大总byte数。

    • max.partition.fetch.bytes:每个Partition每次拉取的最大总byte数。

解决方案

  1. 登录云消息队列 Kafka 版控制台查询消息。

    如果能查询到消息,请继续尝试以下步骤。

  2. 实例详情页面,在左侧导航栏选择可观测 > 云监控,在监控图表页签查看实例公网读取带宽(bit/s)是否已达到网络带宽。

    如果消费流量已经达到网络带宽,您需要扩充网络带宽。

  3. 检查Topic中是否存在单个消息的大小超过网络带宽。

    如果存在单个消息的大小超过网络带宽,请提高网络带宽,或者减小单个消息的大小。

  4. 检查Consumer每次拉取的消息量是否超过网络带宽。

    如果每次拉取的消息量超过网络带宽,您需要调整以下参数。

    • 网络带宽>fetch.max.bytes

    • 网络带宽>max.partition.fetch.bytes*总订阅Partition数

重要
  • 当消费者使用的是VPC网络时,文中的网络带宽指的是实例的网卡写流量峰值。

  • 当消费者使用的是公网时,文中的网络带宽指的是实例的公网流量带宽。