概述
当内存使用超过配置的阈值或者磁盘剩余空间地狱配置的阈值时,RabbitMQ都会暂时阻塞(block)客户端的连接并停止接收客户端发来的消息,以此避免服务崩溃。于此同时,客户端与服务端的心跳检测也会失效,可以通过rabbitmqctl list_connections命令查看,web也可。
内存告警
默认情况下vm_memory_high_watermark的值为0.4,即内存阈值为0.4,表示当RabbitMQ使用内存的阈值设置为40%就会产生内存警告并阻塞所有生产者的链接。一旦告警被解除,一切都会恢复正常。
默认的阈值40%不是单纯的使用超过40%的内存,这仅仅只是限制了RabbitMQ的消息生产者。在最坏的情况下,Erlang的垃圾回收机制会导致两倍内存消耗,也就是80%的使用占比。
如果设置fraction为0,所有的生产者都会被停止发送消息。
可以通过配置文件来配置:
[
{
rabbit,
[
{vm_memory_high_watermark, 0.4}
]
}
].
可以通过rabbitmqctl命令来配置
root@shovel01:/# rabbitmqctl set_vm_memory_high_watermark 0.4
Setting memory threshold on rabbit@shovel01 to 0.4 ...
设置内存阈值的绝对值为1GiB
[
{
rabbit,
[
{vm_memory_high_watermark,{absolute,1073741824}}
]
}
].
设置内存阈值为单位的形式
[
{
rabbit,
[
{vm_memory_high_watermark,{absolute,"1024
RabbitMQ内存与磁盘告警机制

本文介绍RabbitMQ如何通过内存与磁盘告警机制避免服务崩溃。当资源使用超过预设阈值时,RabbitMQ会暂时阻塞客户端连接,并停止接收消息。文中详细解释了内存与磁盘告警的触发条件及如何通过配置文件或命令行调整这些阈值。
最低0.47元/天 解锁文章
1630

被折叠的 条评论
为什么被折叠?



