MQ消息积压
4 分钟阅读
•
734 字
+
327 词
消息积压
的原因是==
生产者的消息生产速度大于消费者的消费速度
==,遇到这个问题的时候,需要排查具体的原因再提出解决方案
-
流量变大
,而
RabbitMQ服务器配置偏低
,导致消息产生速度大于消费速度;
- 扩容 即可。可以 纵向扩容 ,即 增加服务器资源 ,该加内存加内存,该加CPU加CPU。如果纵向扩容不方便,那就 横向扩容 ,即将单机改为 集群模式 ,增加集群节点,并且 增加消费者数量 ,让消费速度快起来!原来是5个消费者,现在变成50个消费者!
- 通过 异步的方式来处理消息 、或者通过 批量处理的方式来消费 。
- 采用== 惰性队列 ==扩大交换器和消费者之间的消息可积压空间,正常队列把消息存放在内存中,可利用空间较小, ==惰性队列接收到消息后直接存入磁盘而非内存==,要消费消息时才会从磁盘中读取并加载到内存 ,支持数百万数据的存储
-
消费者故障,从而消息只增不减;
- 通过查看日志搞清楚为什么消费者会故障,据我多年经验,发生此类问题大概率是程序代码写的不够完美,跑着跑着导致 内存溢出 ,然后消费者进程被杀。要想 永久解决此问题 ,需要结合日志分析程序代码,优化代码。 临时解决方法 是写监控脚本,如果发现消费者进程中断,需要重启服务!
-
程序逻辑设计有问题,导致生产者持续生产消息,而消费者不消费或者消费慢;
- 总之就是程序逻辑问题,判断的方法也很简单,持续观察服务器的资源耗费情况,如果内存、CPU一切都正常,但就是队列持续增长,而消费速度非常慢。此时,就需要好好查查程序代码了。当然, 可以尝试增加消费者数量 ,看看是否有好转。