出现消息堆积的警告

最近更新时间:2024-11-21 15:16:42

我的收藏

问题概述

出现消息堆积的警告。

常见原因

客户端没有消费。
客户端消费速度较慢。
服务端异常。

排查思路

首先,判断是服务端问题,还是客户端问题。
1.1 通过控制台,查看实例级别监控,判断实例是否已经达到最高带宽,是否有产生限流;
1.2 如果您是专业版,可以切换到「高级监控」页:
查看 Broker 节点存活、网络空闲;
查看消费 Sheet 页下,消费总耗时、消费耗时分布,详细指标说明请参考高级监控(专业版)
1.3 排除上述指标异常后,可以确定排查方向转向客户端。
客户端没有消费 可以通过查看分区的消费速度来确认,是否有进行消费,如下图:

客户端消费速度较慢 请参见 消费端消费消息速度缓慢

推荐设置

开源 Kafka 支持消息中设置一个时间戳字段和时间戳类型,目前支持的时间戳类型有两种: CreateTime 和 LogAppendTime。
CreateTime 表示客户端本地的时间,由于客户端的时间可能和服务器时间存在偏差,请检查写入的时间是否是正确的时间。如果时间和当前北京时间相差较远,导致 CKafka 服务无法按照正常消息保存时间对数据进行及时过期删除,因此可能会存在消息异常堆积 。
LogAppendTime 表示消息生产到 CKafka 服务的时间,时间为 CKafka 服务器的时间,建议用户选用 LogAppendTime。

压测服务端性能

如果对服务端性能有疑问,也可以执行如下压测命令来排除是否是服务端存在问题。命令如下:
生产测试命令示例:
bin/kafka-producer-perf-test.sh
--topic test
--num-records 123
--record-size 1000
--producer-props bootstrap.servers= ckafka vip : port
--throughput 20000
消费测试命令示例:
bin/kafka-consumer-perf-test.sh
--topic test
--new-consumer
--fetch-size 10000
--messages 1000
--broker-list bootstrap.servers=ckafka vip : port