一、问题概述
消费端消费消息速度缓慢。
二、可能原因
·服务端负载较高
·限流问题
·客户端负载
·消费端处理能力问题
·网络问题
三、解决方法
·服务端负载较高
·限流问题
如果想确认是否是限流问题引起的,可以配置带宽超限告警。检查 监控 > 实例 是否已经达到实例的带宽峰值。如果已经达到带宽峰值,你需要升级实例的带宽峰值。关于如何升级实例配置,请参阅 升配实例。
·客户端负载
如果服务端没有性能问题,大概率是客户端消费能力不足。首先看一下分区和消费者的对应关系。如果一个消费者消费了太多分区,建议增加消费者的数量。尽量让一个消费者消费一个分区,如下查看消费者和分区的对应关系:
·消费端处理能力问题
如果消费者和分区的分配关系是正常的,那可以在控制台扩容分区提高数据消费的并行度。控制台扩容分区是即时无损的扩容的,不会影响你的业务。扩容分区如下:
·网络问题
排查一下客户端的负载情况。例如客户端机器的 CPU、内存、网卡等指标。如果是 Java 的进程,则着重关注 GC 和堆内存的使用情况。
·消费链路问题
排查消息消费链路下游方面,是否存在其他原因导致消费速度慢。例如消费消息需要有一些同步操作完成后,才向服务端提交 offset。下游常见的异常操作有:
·频繁打印日志。
·写入数据库较慢。
·业务逻辑较为复杂,导致处理消息较慢。
如果短时间不能快速解决,建议增加 Topic 分区数,并扩容消费者实例数量,以迅速增加消费消息速度。