RabbitMQ(九)【内存磁盘的监控】

九、RabbitMQ - 内存磁盘的监控


上一篇文章高级 - 过期时间 TTL

9.1 RabbitMQ 内存警告

当内存使用超过配置的阈值或者磁盘空间剩余空间对于配置的阈值时,RabbitMQ 会暂时阻塞客户端的连接,并且停止接收从客户端发来的消息,以避免服务器的崩溃,客户端与服务端的心态检测机制也会失效

在这里插入图片描述

RabbitMQ 的内存控制

帮助文档:https://www.rabbitmq.com/configure.html

当出现警告的时候,可以通过配置去修改和调整

命令方式

rabbitmqctl set_vm_memory_high_watermark [fraction]
rabbitmqctl set_vm_memory_high_watermark absolute 50MB

fraction/value 为内存阈值,默认情况是:0.4/2GB,代表含义:当 RabbitMQ 的内存超过40%时,就会产生警告并且阻塞所有生产者的连接。通过此命令修改阈值在 Broker 重启以后将会失效,通过修改配置文件方式设置的阈值则不会随着重启而消失,但修改了配置文件一样要重启 broker 才会生效

在这里插入图片描述

通过配置文件方式

在 Linux 虚拟机的/etc/rabbitmq/rabbitmq.conf目录下配置

# vm_memory_high_watermark.relative = 0.4 (默认0.4为2GB)
# 使用relative相对值进行设置fraction,建议取值在0.4~0.7之间,不建议超过0.7,如:
vm_memory_high_watermark.relative = 0.6
# 使用absolute的绝对值的方式,
vm_memory_high_watermark.absolute = 2GB

命令测试

在 Linux 虚拟机上输入以下命令

# 设置当前rabbitmq服务的内存阈值为50MB
rabbitmqctl set_vm_memory_high_watermark absolute 50MB

在这里插入图片描述

在这里插入图片描述

9.2 RabbitMQ 磁盘预警

RabbitMQ 的磁盘预警

当磁盘的剩余空间低于确定的阈值时,RabbitMQ 同样会阻塞生产者,这样可以避免因持久化的消息持续换页耗尽磁盘空间导致服务器崩溃

默认情况下,磁盘预警为50MB的时候会进行预警,表示当磁盘第50MB的时候会阻塞生产者并且停止内存消息换页到磁盘的过程

这个阈值可以减小,但是不能完全消除因磁盘耗尽而导致崩溃的可能性。比如在两次磁盘空间的检查空隙内,第一次检查是:60MB.第二次检查可能就是1MB,这时就会出现警告

命令方式

rabbitmqctl set_disk_free_limit [disk_limit]
rabbitmqctl set_disk_free_limit_memory_limit [fraction]

disk_limit	# 固定单位 KB MB GB
fraction	# 是相对阈值,建议范围在[1.0 ~ 2.0]之间

通过配置文件方式

disk_free_limit.relative = 3.0
disk_free_limit.absolute = 50MB

命令测试

在这里插入图片描述

9.3 RabbitMQ 内存换页

在某个 Broker 节点及内存阻塞生产者之前,它会尝试将队列中的消息换页到磁盘以释放内存空间,持久化的、非持久化的消息都会写入磁盘中,其中持久化的消息本身就在磁盘中有一个副本,所以在转移的过程中持久化的消息会先从内存中清除掉

默认情况下,内存到达的阈值是50%时就会换页处理

也就是说,在默认情况下该内存的相对阈值是0.4的情况下,当内存超过 0.4*0.5 = 0.2 时,会进行换页操作

比如有1000MB内存,当内存的使用率达到了400MB时已经是极限,但是因为配置的换页内存时0.5,这个时候在达到极限400MB之前,会把内存中的200MB进行转移到磁盘中,从而达到稳健运行

可以设置 vm_memory_high_watermark_paging_ratio来进行调整

vm_memory_high_watermark.relative = 0.4
vm_memory_high_watermark_paging_ratio = 0.7 (设置小于1)

为什么设置小于1,因为如果设置为1的阈值,内存就已经到达了极限才去执行换页操作,这样意义不大

下一篇文章高级 - 集群

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
RabbitMQ 队列断开可能是由于以下原因之一导致的: 1. 网络问题:网络不稳定或者连接超时,导致 RabbitMQ 队列断开。 2. 内存不足:RabbitMQ内存使用量超过了系统内存限制,导致队列断开。 3. 配置问题:RabbitMQ配置文件错误或者不正确,导致队列断开。 4. RabbitMQ 服务异常:RabbitMQ 服务出现异常,导致队列断开。 解决方法如下: 1. 检查网络连接:检查网络连接是否正常,是否存在网络抖动等问题,如果网络出现问题,可以尝试重启网络或者更换网络环境。 2. 检查内存使用量:检查 RabbitMQ内存使用量是否超过了系统内存限制,可以通过增加系统内存或者减小 RabbitMQ内存使用量来解决问题。 3. 检查配置文件:检查 RabbitMQ配置文件是否正确,可以通过重新配置来解决问题。 4. 检查 RabbitMQ 服务状态:检查 RabbitMQ 服务是否正常运行,如果服务出现异常,可以尝试重启 RabbitMQ 服务或者重新安装 RabbitMQ。 另外,为了避免 RabbitMQ 队列断开,建议采取以下措施: 1. 使用心跳机制:在 RabbitMQ 的连接参数中开启心跳机制,可以保持连接状态,避免因为长时间没有数据传输而导致连接中断。 2. 合理配置参数:合理配置 RabbitMQ 的参数,例如,增加内存、优化磁盘 IO 等,可以提高 RabbitMQ 的性能和稳定性。 3. 监控 RabbitMQ:定期监控 RabbitMQ 的运行状态,例如,监测队列的消费情况、内存使用情况等,及时发现问题并进行处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naijia_OvO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值