这篇文章翻译自: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重启后被改变。
关键字: disk alarm rabbitmq
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论