• 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
    
    • 1
    • 2

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5

    命令测试

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

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

    在这里插入图片描述

    在这里插入图片描述

    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]之间
    
    • 1
    • 2
    • 3
    • 4
    • 5

    通过配置文件方式

    disk_free_limit.relative = 3.0
    disk_free_limit.absolute = 50MB
    
    • 1
    • 2

    命令测试

    在这里插入图片描述

    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
    • 2

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

    下一篇文章高级 - 集群

  • 相关阅读:
    Nextcloud的一些错误提示
    【成都信息工程大学】只考程序设计!成都信息工程大学计算机考研考情分析!
    RocketMQ 5.0 可观测能力升级:Metrics 指标分析
    SpringClouldAlibaba 之 Sentinel流控规则同步到nacos(并重新生成镜像)
    esp c3下载程序一直重启
    编程向导-JavaScript-基础语法-算术/赋值/逗号/运算符
    网络安全(黑客)—小白自学
    你以为的Java面试只是背答案?跳槽涨薪不还是得靠自己的技术
    不会还有人觉得会员营销很难做吧?教你几招速成!
    问:毁掉一个人,有多容易?答:年龄到了就可以
  • 原文地址:https://blog.csdn.net/Wei_Naijia/article/details/126575952