0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何解决RabbitMQ消息积压的问题?

阿铭linux 来源:阿铭linux 2023-04-27 10:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

如果你在你简历上写上了熟悉RabbitMQ,那么你在面试时很有可能会被问到,如何解决MQ消息积压?

要想将此问题回答完美,一定要多方面考虑。首先,我们要搞清楚是什么原因导致的消息积压。我列举了以下三种:

1)流量变大,而RabbitMQ服务器配置偏低,导致消息产生速度大于消费速度;

2)消费者故障,从而消息只增不减;

3)程序逻辑设计有问题,导致生产者持续生产消息,而消费者不消费或者消费慢;

当然,还有其它原因,上面三个已经能覆盖80%以上的问题。下面就以这三种情况分别来说说如何应对。

对于第一种情况,很明显就是资源不够了,解决方法也很简单,扩容即可。可以纵向扩容,即增加服务器资源,该加内存加内存,该加CPU加CPU。

如果纵向扩容不方便,那就横向扩容,即将单机改为集群模式,增加集群节点,并且增加消费者数量,让消费速度快起来!例如,原来是5个消费者,现在变成50个消费者!

对于第二种情况,要通过查看日志搞清楚为什么消费者会故障,据我多年经验,发生此类问题大概率是程序代码写的不够完美,跑着跑着导致内存溢出,然后消费者进程被杀。要想永久解决此问题,需要结合日志分析程序代码,优化代码。临时解决方法是写监控脚本,如果发现消费者进程中断,需要重启服务!

再来说第三个,这种情况发生的概率其实并不高,总之就是程序逻辑问题,判断的方法也很简单,持续观察服务器的资源耗费情况,如果内存、CPU一切都正常,但就是队列持续增长,而消费速度非常慢。此时,就需要好好查查程序代码了。当然,可以尝试增加消费者数量,看看是否有好转。

上面说的只是“亡羊补牢”的操作,但还没有说如何将当前已经积压的队列给快速消耗掉。

相信,当我们发现消息积压时,想必问题已经比较严重了,或者说已经影响到业务正常运转了,那么当务之急肯定是需要先将业务恢复正常。对于上面第二种情况,直接重启相关服务,让消费者恢复正常,定是首当其冲。

除此之外,还有一种“断尾求生”的骚操作,就是新开一个队列,将新产生的消息到新队列里,消费者也到新队列里消费。而老的队列,则需要做一个异步处理,慢慢消费掉即可。

当然,如果积压的消息不怎么重要,可有可无的话,那干脆直接删除掉,这样大家都省事不是。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11332

    浏览量

    225994
  • rabbitmq
    +关注

    关注

    0

    文章

    20

    浏览量

    1299

原文标题:面试题:如何解决RabbitMQ消息积压

文章出处:【微信号:aming_linux,微信公众号:阿铭linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ChatGPT突然无法登录是什么情况?如何解决?

    直接影响工作效率。那么到底是怎么回事?又该如何解决? 一、ChatGPT突然无法登录有哪些原因? 根据 OpenAI 官方帮助文档以及实际经验,常见原因主要集中在以下几类: 1、账号或密码问题 密码输入错误 账号被锁定 多次登录失败触发安全限制 常见表现: 提示账号
    的头像 发表于 04-13 12:34 2578次阅读
    ChatGPT突然无法登录是什么情况?如<b class='flag-5'>何解</b>决?

    gui guider 1.9.1无法登录,白屏如何解决?

    gui guider 1.9.1 无法登录 急急急 白屏如何解
    发表于 03-10 07:06

    使用 J-LINK 调试时发生错误,是什么原因导致的?如何解决?

    使用J-Link调试时发生错误,如图所示。我应该如何解决这个错误?
    发表于 02-26 10:08

    从库存积压到资金盘活:RFID 如何让服装企业周转率提升 40%?

    当服装学会 “说话”:RFID 掀起的管理革命 在快时尚品牌日均上新百款、SKU 数以万计的今天,传统人工扫码盘点的误差率高达 5%-8%,库存积压导致的年损失占营收比重超 15%。而 RFID
    的头像 发表于 01-19 17:50 211次阅读

    何解决激光雷达点云中“鬼影”和“膨胀”问题?

    的“鬼影”和“膨胀”可以如何解决,今天就围绕这个话题展开聊聊。 激光雷达点云中的“鬼影”和“膨胀”到底是什么 在聊今天的话题前,还是简单说下激光雷达中的“鬼影”和“膨胀”是什么。激光雷达作为广泛应用在自动驾驶、机器人和
    的头像 发表于 01-02 09:30 657次阅读
    如<b class='flag-5'>何解</b>决激光雷达点云中“鬼影”和“膨胀”问题?

    何解决MCU系统时钟频率改变导致的程序跑飞?

    何解决MCU系统时钟频率改变导致的程序跑飞问题
    发表于 12-05 08:20

    请问CW32L010d电源噪声如何解决?

    CW32L010d电源噪声如何解决?
    发表于 11-18 07:18

    何解决在 Keil 中编译时出现 FILE DOES NOT EXSIT 错误?

    何解决在 Keil 中编译时出现 FILE DOES NOT EXSIT 错误?
    发表于 08-25 08:25

    深入剖析RabbitMQ高可用架构设计

    在微服务架构中,消息队列故障导致的系统不可用率高达27%!如何构建一个真正可靠的消息中间件架构?本文将深入剖析RabbitMQ高可用设计的核心要点。
    的头像 发表于 08-18 11:19 1118次阅读

    高温振动传感器在600°C环境下工作时,输出信号出现周期性噪声干扰,可能的原因有哪些?如何解决?

    高温振动传感器在600°C环境下工作时,输出信号出现周期性噪声干扰,可能的原因有哪些?如何解决?
    的头像 发表于 08-05 10:13 1173次阅读
    高温振动传感器在600°C环境下工作时,输出信号出现周期性噪声干扰,可能的原因有哪些?如<b class='flag-5'>何解</b>决?

    擦除固件后无法检测JTAG如何解决?

    我尝试通过ModusToolbox™编程器在 KIT_FX10_FMC_001 上实现固件。 但当我按下“擦除”按钮后。 我无法连接 JTAG 端口。 如何解决这个问题? 因此,我无法再次编程引导加载程序,因为我无法连接到设备。
    发表于 07-25 08:00

    RabbitMQ消息队列解决方案

    在现代分布式系统架构中,消息队列作为核心组件,承担着系统解耦、异步处理、流量削峰等重要职责。RabbitMQ作为一款成熟的消息队列中间件,以其高可用性、高可靠性和丰富的特性,成为众多企业的首选方案。本文将从运维工程师的角度,详细阐述RabbitMQ从单机部署到集群搭建的完
    的头像 发表于 07-08 15:55 783次阅读

    顺络贴片电容的漏电流问题如何解决?

    顺络贴片电容的漏电流问题如何解决?要解决顺络贴片电容的漏电流问题,可以从以下方面入手: 1、选型与材料优化 选择优质型号:优先选择质量可靠、稳定性好的顺络贴片电容,如具有低漏电流特性的X7R或X5R
    的头像 发表于 06-19 15:07 871次阅读
    顺络贴片电容的漏电流问题如<b class='flag-5'>何解</b>决?

    allegro软件走线命令下参数不显示如何解

    在PCB设计中,走线命令是频繁使用的功能之一。执行走线命令后,通常会在Options面板中显示线宽、层、角度等设置选项,用于调整走线参数。然而,有时执行走线命令后,Options面板中可能没有显示这些设置区域,如图1所示,该如何解决?
    的头像 发表于 06-05 09:30 2380次阅读
    allegro软件走线命令下参数不显示如<b class='flag-5'>何解</b>决

    设备需求极致紧凑的空间体验,我们该如何解决?

    在自动化集成过程,往往会碰到设备对控制系统体积有极致要求的情况,面对这样的挑战,如何解决?项目背景与需求分析在自动化集成过程,往往会碰到设备对控制系统体积有极致要求的情况,面对这样的挑战,如何解
    的头像 发表于 05-19 11:43 554次阅读
    设备需求极致紧凑的空间体验,我们该如<b class='flag-5'>何解</b>决?