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

相关文章

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

RabbitMQ 延时队列插件安装与使用示例详解(基于 Delayed Message Plugin)

《RabbitMQ延时队列插件安装与使用示例详解(基于DelayedMessagePlugin)》本文详解RabbitMQ通过安装rabbitmq_delayed_message_exchan... 目录 一、什么是 RabbitMQ 延时队列? 二、安装前准备✅ RabbitMQ 环境要求 三、安装延时队

spring AMQP代码生成rabbitmq的exchange and queue教程

《springAMQP代码生成rabbitmq的exchangeandqueue教程》使用SpringAMQP代码直接创建RabbitMQexchange和queue,并确保绑定关系自动成立,简... 目录spring AMQP代码生成rabbitmq的exchange and 编程queue执行结果总结s

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

RabbitMQ消费端单线程与多线程案例讲解

《RabbitMQ消费端单线程与多线程案例讲解》文章解析RabbitMQ消费端单线程与多线程处理机制,说明concurrency控制消费者数量,max-concurrency控制最大线程数,prefe... 目录 一、基础概念详细解释:举个例子:✅ 单消费者 + 单线程消费❌ 单消费者 + 多线程消费❌ 多

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间