RabbitMQ 可用磁盘空间报警

概要

当磁盘可用空间低于设定的值(默认50M),将触发警报,并阻塞所有生产者。

这目标是为了避免填满整个磁盘,这将导致所有节点上的写入操作失败,并可能导致RabbitMQ停止服务。

如何工作

为了减少磁盘被填满的风险,所有消息将被阻止写入。但内存中停留的消息仍会写入到磁盘,耗尽已经有限的磁盘空间。

如果磁盘报警设置的太低,并且消息被快速写入到磁盘,这可能耗尽磁盘,使得RabbitMQ在两次磁盘空间检查的时间段(至少间隔10秒)内崩溃。一种保守的方法是将预警可用空间设置为和系统内存大小一样。

RabbitMQ服务器使用的磁盘空间会每次间隔至少10秒检查一次,来确定是否触发或者清除预警。

监控将在节点启动时开始,它将记录如下日志:

2019-04-01 12:02:11.564 [info] <0.329.0> Enabling free disk space monitoring
2019-04-01 12:02:11.564 [info] <0.329.0> Disk free limit set to 950MB

在不能识别的平台上,可用磁盘监控将会被停用,日志记录如下:

2019-04-01 11:04:54.002 [info] <0.329.0> Disabling disk free space monitoring

使用RabbitMQ集群时,可用磁盘预警是全局的,如果一个节点触发预警,则所有节点的写入消息都将被阻止。

RabbitMQ定期检查可用磁盘空间,检查磁盘空间的频率与上次检查时的空间量有关系。这是为了确保磁盘警报在空间耗尽时及时关闭。通常会每10秒检查一次磁盘,但当接近极限时,检查频率会增加,当非常接近极限值时,检查频率会增加至每秒10次,这可能会对系统负载产生一定的影响。

当可用磁盘空间低于设置的阈值时,RabbitMQ将会阻塞生产者和阻止内存中的消息写入磁盘,这将降低由于磁盘空间耗尽导致系统崩溃的可能性,但并不能完全消除这种情况。在特定情况下,两次磁盘监控检查之间,消息快速的被写入磁盘,则仍可能耗尽磁盘致使系统崩溃。

配置磁盘可用空间限制

磁盘可用空间限制可使用disk_free_limit参数进行设置。默认情况,数据库分区上需要50M的空间。以下是将磁盘可用空间限制在1G:

disk_free_limit.absolute = 1000000000

或者你可以使用内存单位(KB,MB,GB等),如下:

disk_free_limit.absolute = 1GB

也可以设置为相对于机器内存的可用空间限制,以下配置为可用磁盘空间与机器内存相同:

disk_free_limit.relative = 1.0

可用磁盘空间预警限制阈值可以在RabbitMQ运行期间被修改。使用rabbitmqctl set_disk_free_limit 命令 或者 rabbitmqctl set_disk_free_limit mem_relative 命令,这个会在服务下次重启之前一直生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值