- 判断消息堆积是否属于正常情况
登录“分布式消息服务Kafka”控制台,在“消费组管理”页面,找到目标消费组,进入“消息堆积”页面。
(1)堆积量保持在一个稳定的数值之间波动,没有持续扩大。说明客户端一直在拉取最新消息,没有消息堆积,属于正常情况。
(2)堆积量逐步扩大,并且当前位点一直不变。客户端的消费线程因为某些原因卡住,没有继续消费,也没有继续向服务端提交位点,属于异常情况,即消息的确堆积了。
(3)堆积量逐步扩大,同时当前位点在前进。说明客户端还在消费中,但是消息的消费速度慢于消息的发送速度。消息堆积大多是消费速度过慢或者消费线程阻塞造成的,建议不要在消费逻辑中有太多耗时的操作。
- 消息堆积的处理方式
经过上述判断,确认消息的确存在堆积情况时,建议打印消息的消费耗时,或者根据堆栈信息查看线程执行情况,适当调整以加快消息的消费速度,避免出现消息堆积。