RabbitMQ持久化与内存管理

本文详细介绍了RabbitMQ的持久化机制,包括消息、队列和交换器的持久化。当内存达到一定阈值时,RabbitMQ会进行内存换页操作,并在磁盘空间不足时阻塞生产者。内存告警机制则在内存使用超过配置值时阻止新的消息,以保护服务稳定运行。此外,还讨论了内存控制和磁盘阈值的配置选项。
摘要由CSDN通过智能技术生成
持久化机制

RabbitMQ的持久化分为消息持久化、队列持久化、交换器持久化。无论是持久化消息还是非持久化消息都可以被写入磁盘。

当RabbitMQ收到消息时,如果是持久化消息,则会储存在内存中,同时也会写入磁盘;如果是非持久化消息,则只会存在内存中。当内存使用达到RabbitMQ的临界值时,内存中的数据会被交换到磁盘,持久化消息由于本就存在于磁盘中,不会被重复写入。

消息的持久化是在发消息时,通过deliveryMode设置,队列、交换器也可以通过参数持久化,非持久化的消息、队列、交换器在rabbitmq-server重启后会消失,即使已经被写入磁盘。

内存告警

RabbitMQ中通过内存阈值参数控制内存的使用量,当内存使用超过配置的阈值时,RabbitMQ会阻塞客户端的连接并停止接收从客户端发来的消息,以免服务崩溃,同时客户端于与服务端的心跳检测也会失效。

内存控制

当出现内存告警时,可以通过管理命令临时调整。

rabbitmqctl set_vm_memory_high_watermark <fraction>

fraction为内存阈值,默认是0.4,表示RabbitMQ使用的内存超过系统内存的40%时,会产生内存告警,通过此命令修改的阈值在重启后会失效。可以通过修改配置文件的方式,使之永久生效,但是需要重启服务。

# rabbitmq.conf

vm_memory_high_watermark.relative=0.4
#vm_memory_high_watermark.absolute=1GB
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值