为什么出现消息堆积

  1. 消费者速度慢:消费者消费消息的速度跟不上生成者生产消息的速度,导致消息在队列中积压。
  2. 发送方速度快:发送方发送速度变快。
  3. 系统瓶颈:消费者应用可能受到 CPU、内存、磁盘 IO 或网络等资源的限制,影响消费速度。
  4. 代码问题:消费者端代码可能存在性能问题或者异常,导致消费过程缓慢。
  5. 网络延迟:消费者与 Kafka 集群之间的网络延迟较高,影响消费者性能。
  6. 如果使用的是消费者组,确保没有频繁地发生 rebalance。

怎么解决?

  1. 增加消费者数量:可以增加消费者数量,确保每个分区有一个消费者进行处理,从而提高消费效率。
  2. 消费者性能调优:优化消费者的代码逻辑,减少处理每条消息所需的时间。
  3. 增加消费者实例:如果单个消费者实例资源有限,可以增加消费者实例来改善性能。
  4. 调整 Kafka 配置:调整消费者读取批次大小、最大拉取字节数等配置参数,以提高消费吞吐量。
  5. 优化系统资源:检查并优化消费者应用运行所在的机器的硬件资源,确保有足够的计算性能和带宽。

谨慎异步消费消息,否则可能出现消息丢失的问题。

业务上为什么出现消息堆积?

比如谎称字节实习期间见过消息挤压问题,解决办法?