RabbitMQ流控-磁盘控制

2024-01-23 08:18
文章标签 控制 rabbitmq 磁盘 流控

本文主要是介绍RabbitMQ流控-磁盘控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当磁盘空间低于配置(disk_free_limit)的限制时(默认disk_free_limit.absolute=50MB),将触发警报,并阻塞所有生产者。目的是避免填充整个磁盘,否则将导致节点上的所有写操作失败,并可能导致RabbitMQ终止。为了减少磁盘被填满的风险,所有正在传入的消息都将被阻塞。在内存压力下,非持久化的暂态消息仍将page到磁盘,并将耗尽已经有限的磁盘空间。如果磁盘警报阈值设置得太低,并且消息被快速换出(到磁盘),则可能在磁盘空间检查期间耗尽磁盘空间并崩溃RabbitMQ(间隔至少10秒)。更保守的方法是将磁盘限制阈值设置为与系统上安装的内存数量相同(参见下面的配置)。

如果空闲磁盘空间低于配置的阈值,将触发警报。将至少每10秒监视代理数据库使用的驱动器或分区的空闲空间,以确定是否应该发出或清除磁盘警报。一旦代理启动,将立即启动监控,导致代理日志文件中出现一个条目:

=INFO REPORT==== 23-Jun-2012::14:52:41 ===
Disk free limit set to 953MB

在不被认可的平台上,监控功能将会被禁用,从而导致以下输入:

=WARNING REPORT==== 23-Jun-2012::15:45:29 ===
Disabling disk free space monitoring

在集群中运行RabbitMQ时,磁盘报警是集群范围的;如果一个节点低于限制,那么所有节点都将阻塞传入的消息。

RabbitMQ定期检查空闲磁盘空间的数量。检查磁盘空间的频率与最后一次检查时的空间数量有关(以确保在磁盘空间耗尽时及时发出磁盘警报)。通常每10秒检查一次磁盘空间,但是随着限制的接近,频率会增加。当非常接近极限时,RabbitMQ将每秒检查10次。这可能会对系统负载产生一些影响。

当空闲磁盘空间低于配置的限制时,RabbitMQ将阻塞消息生产者并阻止基于内存的消息page到磁盘。这将减少磁盘空间耗尽导致崩溃的可能性,但不会完全消除它。特别是,如果正在快速换出(page)消息,可能会耗尽磁盘空间并在两次运行磁盘空间检测之间崩溃。更保守的方法是将限制设置为与系统上安装的内存数量相同(参见下面的配置部分)。

Configuring the Disk Free Space Limit

磁盘空闲空间限制使用参数disk_free_limit设置。默认情况下,数据库分区上需要50MB的空闲空间(关于默认数据库位置,请参阅http://www.rabbitmq.com/relocate.html的描述,默认地址:/var/lib/rabbitmq/mnesia/rabbit@localhost)。此配置文件将磁盘空闲空间限制设置为1GB:

disk_free_limit.absolute = 1GB
或
[{rabbit, [{disk_free_limit, 1000000000}]}]

也可以相对于机器中的RAM设置一个空闲空间限制。此配置文件将磁盘空闲空间限制设置为与机器上RAM数量相同:

disk_free_limit.relative = 1.0
或
[{rabbit, [{disk_free_limit, {mem_relative, 1.0}}]}]

当代理使用rabbitmqctl set_disk_free_limit disk_limit命令或rabbitmqctl set_disk_free_limit mem_relative fraction命令运行时,可以更改该限制。此命令将一直生效,直到代理关闭。在代理重新启动之后,还应该更改相应的配置设置。

这篇关于RabbitMQ流控-磁盘控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635779

相关文章

浅析如何使用Swagger生成带权限控制的API文档

《浅析如何使用Swagger生成带权限控制的API文档》当涉及到权限控制时,如何生成既安全又详细的API文档就成了一个关键问题,所以这篇文章小编就来和大家好好聊聊如何用Swagger来生成带有... 目录准备工作配置 Swagger权限控制给 API 加上权限注解查看文档注意事项在咱们的开发工作里,API

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

Spring IOC控制反转的实现解析

《SpringIOC控制反转的实现解析》:本文主要介绍SpringIOC控制反转的实现,IOC是Spring的核心思想之一,它通过将对象的创建、依赖注入和生命周期管理交给容器来实现解耦,使开发者... 目录1. IOC的基本概念1.1 什么是IOC1.2 IOC与DI的关系2. IOC的设计目标3. IOC

Linux使用fdisk进行磁盘的相关操作

《Linux使用fdisk进行磁盘的相关操作》fdisk命令是Linux中用于管理磁盘分区的强大文本实用程序,这篇文章主要为大家详细介绍了如何使用fdisk进行磁盘的相关操作,需要的可以了解下... 目录简介基本语法示例用法列出所有分区查看指定磁盘的区分管理指定的磁盘进入交互式模式创建一个新的分区删除一个存

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

不删数据还能合并磁盘? 让电脑C盘D盘合并并保留数据的技巧

《不删数据还能合并磁盘?让电脑C盘D盘合并并保留数据的技巧》在Windows操作系统中,合并C盘和D盘是一个相对复杂的任务,尤其是当你不希望删除其中的数据时,幸运的是,有几种方法可以实现这一目标且在... 在电脑生产时,制造商常为C盘分配较小的磁盘空间,以确保软件在运行过程中不会出现磁盘空间不足的问题。但在

Springboot使用RabbitMQ实现关闭超时订单(示例详解)

《Springboot使用RabbitMQ实现关闭超时订单(示例详解)》介绍了如何在SpringBoot项目中使用RabbitMQ实现订单的延时处理和超时关闭,通过配置RabbitMQ的交换机、队列和... 目录1.maven中引入rabbitmq的依赖:2.application.yml中进行rabbit

SQL Server数据库磁盘满了的解决办法

《SQLServer数据库磁盘满了的解决办法》系统再正常运行,我还在操作中,突然发现接口报错,后续所有接口都报错了,一查日志发现说是数据库磁盘满了,所以本文记录了SQLServer数据库磁盘满了的解... 目录问题解决方法删除数据库日志设置数据库日志大小问题今http://www.chinasem.cn天发

SpringBoot整合Canal+RabbitMQ监听数据变更详解

《SpringBoot整合Canal+RabbitMQ监听数据变更详解》在现代分布式系统中,实时获取数据库的变更信息是一个常见的需求,本文将介绍SpringBoot如何通过整合Canal和Rabbit... 目录需求步骤环境搭建整合SpringBoot与Canal实现客户端Canal整合RabbitMQSp

Python实现局域网远程控制电脑

《Python实现局域网远程控制电脑》这篇文章主要为大家详细介绍了如何利用Python编写一个工具,可以实现远程控制局域网电脑关机,重启,注销等功能,感兴趣的小伙伴可以参考一下... 目录1.简介2. 运行效果3. 1.0版本相关源码服务端server.py客户端client.py4. 2.0版本相关源码1