210_RabbitMQ运维-内存磁盘的监控


监控简介

image.png
:::info
物理内存为8G,默认0.4,所以内存阈值为:3GB
:::
image.png

RabbitMQ的内存警告

:::info
当内存使用超过配置的阈值或者磁盘空间剩余空间低于配置的阈值时,RabbitMQ会暂时阻塞客户端的连接,并且停止接收从客户端发来的消息,以此避免服务器的崩溃,客户端与服务端的心态检测机制也会失效。
如下图:
:::
828b2beac8cdc3e138f532b2e3720c3d_kuangstudy414d826e-5cea-4caa-aba2-92cd30be34f4.png
:::info
当出现blocking或blocked话说明到达了阈值和以及高负荷运行了。
:::

RabbitMQ的内存控制

:::info
参考帮助文档:https://www.rabbitmq.com/configure.html
当出现警告的时候,可以通过配置去修改和调整
:::

命令的方式

rabbitmqctl set_vm_memory_high_watermark 0.4
rabbitmqctl set_vm_memory_high_watermark absolute 2GB

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

设置内存阈值为50MB,查看内存告警情况

rabbitmqctl set_vm_memory_high_watermark absolute 50MB

15beb8284b55772d277df67ca2deec52_kuangstudy2a0177fc-9dd6-4285-8b26-1cc9cd0c6e35.png
79aba8be0d9a539b84395c686fad0f61_kuangstudy928db4f2-6860-470e-ba62-23e811eee586.png

配置文件方式 rabbitmq.conf

:::info
当前配置文件:/etc/rabbitmq/rabbitmq.conf
:::

#默认
#vm_memory_high_watermark.relative = 0.4
# 使用relative相对值进行设置fraction,建议取值在04~0.7之间,不建议超过0.7.
vm_memory_high_watermark.relative = 0.6
# 使用absolute的绝对值的方式,但是是KB,MB,GB对应的命令如下
vm_memory_high_watermark.absolute = 2GB

RabbitMQ的内存换页

:::info
在某个Broker节点及内存阻塞生产者之前,它会尝试将队列中的消息换页到磁盘以释放内存空间,持久化和非持久化的消息都会写入磁盘中,其中持久化的消息本身就在磁盘中有一个副本,所以在转移的过程中持久化的消息会先从内存中清除掉。
:::
:::info
默认情况下,内存到达的阈值是50%时就会换页处理。
也就是说,在默认情况下该内存的阈值是0.4的情况下,当内存超过0.4*0.5=0.2时,会进行换页动作。
:::
:::info
比如有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的值)

:::info
为什么设置小于1,以为你如果你设置为1的阈值。内存都已经达到了极限了。你在去换页意义不是很大了。
:::

RabbitMQ的磁盘预警

:::info
当磁盘的剩余空间低于确定的阈值时,RabbitMQ同样会阻塞生产者,这样可以避免因非持久化的消息持续换页而耗尽磁盘空间导致服务器崩溃。
:::
:::info
默认情况下:磁盘预警为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
posted @ 2022-08-11 21:21  清风(学习-踏实)  阅读(181)  评论(0)    收藏  举报