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

    文章

    10829

    浏览量

    211196
  • rabbitmq
    +关注

    关注

    0

    文章

    17

    浏览量

    1016

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

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

收藏 人收藏

    评论

    相关推荐

    何解决热插拔时的电压过冲

    电子发烧友网站提供《如何解决热插拔时的电压过冲.pdf》资料免费下载
    发表于 09-06 11:34 0次下载
    如<b class='flag-5'>何解</b>决热插拔时的电压过冲

    何解决工字电感噪音大的问题

    电子发烧友网站提供《如何解决工字电感噪音大的问题.docx》资料免费下载
    发表于 09-04 11:46 0次下载

    何解决电感的漏感问题

    电子发烧友网站提供《如何解决电感的漏感问题.docx》资料免费下载
    发表于 09-02 14:48 0次下载

    何解决贴片绕线功率电感的兼容问题

    电子发烧友网站提供《如何解决贴片绕线功率电感的兼容问题.docx》资料免费下载
    发表于 07-04 17:04 0次下载

    特斯拉库存积压:挑战与机遇并存

    近日,特斯拉面临了前所未有的库存积压问题,引发了业界和市场的广泛关注。据Sherwood News报道和SkyFi提供的卫星图像对比,特斯拉位于得克萨斯州的内华达超级工厂周围的停车场,在短短几个月
    的头像 发表于 06-13 11:54 851次阅读

    何解决连接国外大带宽服务器时可能遇到的问题

     相信很多小白用户会对如何解决连接国外大带宽服务器时可能遇到的问题感兴趣,RAK部落小编就为您整理发布如何解决连接国外大带宽服务器时可能遇到的问题。
    的头像 发表于 03-19 12:00 482次阅读

    何解决修复立磨摇臂轴承位磨损问题

    何解决修复立磨摇臂轴承位磨损问题
    发表于 03-15 15:41 0次下载

    煤气柜泄漏问题如何解

    电子发烧友网站提供《煤气柜泄漏问题如何解决.docx》资料免费下载
    发表于 03-05 17:49 0次下载

    电镀塞孔如何解决PCB的信号、机械和环境问题?

    电镀塞孔如何解决PCB的信号、机械和环境问题?
    的头像 发表于 02-27 14:15 565次阅读

    何解决键槽滚键磨损问题

    电子发烧友网站提供《如何解决键槽滚键磨损问题.docx》资料免费下载
    发表于 02-04 14:24 0次下载

    何解决针对破碎机轴磨损问题

    电子发烧友网站提供《如何解决针对破碎机轴磨损问题.docx》资料免费下载
    发表于 01-17 16:30 0次下载

    基于Docker Compose部署RabbitMQ的经验分享

    RabbitMQ 是一个功能强大的开源消息队列系统,它实现了高效的消息通信和异步处理。
    的头像 发表于 01-03 10:22 1808次阅读
    基于Docker Compose部署<b class='flag-5'>RabbitMQ</b>的经验分享

    印刷锡膏时出现少锡的问题该如何解决?

    印刷锡膏时出现少锡的问题该如何解决?
    的头像 发表于 12-11 09:38 2469次阅读
    印刷锡膏时出现少锡的问题该如<b class='flag-5'>何解</b>决?

    redis和rabbitMQ的区别

    Redis和RabbitMQ是两个流行的开源消息传递技术,用于构建高可靠、可扩展和可扩展的应用程序。虽然它们都用于实现消息传递机制,但它们在设计和运作方式上存在一些不同之处。在本文中,我们将详细讨论
    的头像 发表于 12-04 14:48 1327次阅读

    RabbitMq入门教程

    RabbitMQ是一个开源的,在AMQP基础上完整的,可复用的企业消息系统。
    的头像 发表于 12-04 11:10 478次阅读
    <b class='flag-5'>RabbitMq</b>入门教程