波斯马BOSSMA Information Technology

RabbitMQ磁盘警报

发布时间:2017年9月22日 / 分类:RabbitMQ / 5,484 次浏览 / 评论

这篇文章翻译自:http://www.rabbitmq.com/disk-alarms.html

当磁盘剩余空间下降到一定限制时,RabbitMQ将会阻塞生产者。这是一个好主意,因为即使内存中的消息可以被写入磁盘,但是耗尽磁盘会导致服务器崩溃。默认的情况下,当剩余磁盘空间小于50MB时,RabbitMQ会阻塞生产者,并阻止基于内存的消息分页到磁盘。这会减少但不会消除由于磁盘空间耗尽而导致崩溃的可能性。在某些特殊情况下,在两次磁盘空间检查的时间间隔中,如果消息被很快的写入磁盘,也可能会耗尽磁盘,并导致崩溃。因此一个保守点的方法是设置这个限制为操作系统的内存数量。

如果剩余磁盘空间下降到配置的限制,一个全局的流程控制将会被触发。Broker数据库使用的磁盘驱动器或者分区的剩余空间将至少每10秒被检查一次,然后决定是触发还是清除报警。监视器将随Broker一起启动,并在broker日志文件中产生一条记录:

=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秒一次,但是越靠近限制,检查频率会越高。当非常接近这个限制时,会达到每秒10次。这可能会对系统负载有一些影响。

配置剩余磁盘空间限制

剩余磁盘空间限制通过disk_free_limit进行配置。默认是在数据库所在分区上需要有50M(关于文件位置请看相关说明)。配置文件中设置剩余磁盘空间限制为1GB:

[{rabbit, [{disk_free_limit, 1000000000}]}].

你还可以使用内存单位进行配置(kB, kiB, MB, MiB, GB, GiB等等),比如:

[{rabbit, [{disk_free_limit, "1GB"}]}].

你也可以设置这个限制与机器的内存关联起来。在配置文件中设置剩余磁盘空间限制等于机器的内存数量:

[{rabbit, [{disk_free_limit, {mem_relative, 1.0}}]}].

这个限制也可以在Broker运行时进行修改,使用rabbitmqctl set_disk_free_limit disk_limit ?或者?rabbitmqctl set_disk_free_limit mem_relative fraction?命令。这些命令产生的效果直到broker被关闭,相应的配置也将会在broker重启后被改变。

 

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《RabbitMQ磁盘警报

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论