rabbitmq 消息队列堆积问题

本文分享了一次MongoDB数据迁移过程中的经验教训,详细介绍了如何通过建立索引解决CPU和内存占用过高导致的RabbitMQ消息堆积问题,并探讨了提升消息消费速率的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目遇到mongo数据恢复的问题,首先我从原项目中将数据导出,然后恢复到指定的服务器,以为就好了。

但是遇到一个 问题,就是rabbitmq的消息队列出现了消息堆积,刚开始我以为是rabbitmq服务的问题,但是消息队列偶尔又会出现一两次被消费的情况。

这时我查看系统的cup的使用率,发现mongo这个进程的使用率很高,内存使用率也很高,这时,我使用命令db.currentOp()查看Mongo在执行的任务,发现它总是从一张表中进行了全局扫描,使用命令db.<集合名称>.storageSize()查看这张表的大小,发现居然有30多个G的数据量。然后百度了一下,具体的原因如下:

mongo占有cpu和内存资源很高,导致磁盘的读写率降低,从而导致消息队列堆积的问题,此时,我对这张表建立了索引操作,完成以后,cpu和内存明显降低,消息队列也不再出现消息堆积的问题。

 

 

另外,消息堆积问题,基本都是因为消费者处理的时间大于生产者的生产时间,此时的处理思路就是提高消费者的消费速率

思路有两个:1将消费者中的业务逻辑分散开处理,比如说消费者中有两个业务处理,此时可以分两个通道,分开处理。

                      2增加消费者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值