MST

星途 面试题库

面试题:消息队列常见的故障类型及排查思路

请简述消息队列在后端开发中可能出现的常见故障类型,并说明针对每种故障类型你通常会采取哪些排查思路?
42.6万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

常见故障类型及排查思路

  1. 消息积压
    • 排查思路
      • 检查消费者端消费能力,查看消费逻辑是否存在复杂计算、I/O 阻塞等情况导致消费速度慢。通过监控工具查看消费者的消费速率、处理时间等指标。
      • 检查消息队列配置,比如队列容量是否过小,是否存在限流配置影响消息投递速度。
      • 检查生产者端生产速度,是否在短时间内产生大量消息超出队列处理能力。查看生产者日志了解消息生产频率。
  2. 消息丢失
    • 排查思路
      • 确认生产者端,查看是否成功发送消息,是否有发送失败但未处理的情况。检查生产者的重试机制是否正常工作,日志中是否有发送失败记录。
      • 检查消息队列中间件,确认消息是否被正确接收和存储。查看队列监控数据,是否有消息异常丢失的情况。例如 Kafka 可查看分区副本同步状态等。
      • 检查消费者端,查看是否在消费成功前出现异常导致消息未确认就丢失。检查消费者日志,查看消费逻辑中是否有未处理的异常。
  3. 消息重复消费
    • 排查思路
      • 检查消费者端,查看是否在消费消息后未及时确认,导致队列认为消息未被成功消费而重新投递。检查消费者的确认机制代码逻辑。
      • 确认消息队列中间件配置,某些配置不当可能导致消息重复投递。例如 RabbitMQ 的持久化配置等。
      • 查看业务逻辑,是否本身未对重复消息进行幂等处理,导致重复消费产生重复业务影响。梳理业务代码,确认幂等性实现情况。
  4. 队列连接异常
    • 排查思路
      • 检查网络连接,确认生产者、消费者与消息队列服务器之间网络是否正常。使用 ping、telnet 等命令测试网络连通性。
      • 查看消息队列服务器状态,是否出现故障、重启等情况导致连接异常。查看服务器日志、监控指标等。
      • 检查客户端配置,确认连接参数(如地址、端口、用户名、密码等)是否正确。仔细核对客户端代码中的连接配置部分。
  5. 性能问题
    • 排查思路
      • 分析消息队列本身性能,查看队列的吞吐量、延迟等指标。通过监控工具获取队列性能数据,判断是否达到瓶颈。
      • 检查硬件资源,查看服务器的 CPU、内存、磁盘 I/O 等使用情况。资源不足可能导致队列性能下降。使用系统监控工具查看资源使用状态。
      • 优化消息处理逻辑,检查生产者和消费者的代码逻辑,是否存在不必要的开销,如频繁的序列化/反序列化、复杂的业务计算等。对代码进行性能分析和优化。