Rabbitmq的内存磁盘监控

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

如下图:

Rabbitmq的内存磁盘监控_中间件


当出现blocking或blocked话说明到达了同值和以及高负荷运行了。

官网:https://www.rabbitmq.com/configure.html

rabbitmqctl set_vm_memory_high_watermark <fraction>
rabbitmqctl set_vm_memory_high_watermark absolute <memory_limit>

Rabbitmq的内存磁盘监控_持久化_02


配置文件rabbitmq.conf

vm_memory_high_watermark.relative = 0.4  建议0.4-0.6
vm_memory_high_watermark.absolute = 1024MB

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

默认情况下,内存到达的阈值是50%时就会换页处理。
也就是说,在默认情况下该内存的阈值是0.4的情况下,当内存超过0.4*0.5=0.2时, 会进行换页动作。

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

vm_memory_high_watermark_paging_ratio = 0.75

设置小于1的,不然没有意义

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

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

这个问值可以减小,但是不能完全的消除因礎盘耗尽而导致崩清的可能性。比如在两次磁盘空间的检查空隙内,第一

次检查是: 60MB,第二检查可能就是IMB,就会出现警告。

Rabbitmq的内存磁盘监控_换页_03

Rabbitmq的内存磁盘监控_换页_04


Rabbitmq的内存磁盘监控_java_05


Rabbitmq的内存磁盘监控_持久化_06