RabbitMQ磁盤警報
當可用磁盤空間低於配置的限制(默認為50MB)時,將觸發警報,所有生產者將被阻止。目標是避免填滿整個磁盤,這將導致節點上的所有寫操作失敗,並可能導致RabbitMQ終止。為了減少填滿磁盤的風險,所有傳入的消息都被阻止。在內存不足的情況下,瞬時消息仍然被分頁到磁盤,並且會占用已經有限的磁盤空間。如果磁盤警報設置得太低,並且信息被快速轉出,則可能會耗盡磁盤空間,並在磁盤空間檢查(至少間隔10秒)之間崩潰RabbitMQ。更保守的方法是將限制設置為與系統上安裝的內存量相同.
如果可用磁盤空間量低於配置的限制,則會觸發警報。代理程序數據庫使用的驅動器或分區的可用空間將至少每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將阻止生產者並阻止將基於內存的消息分頁到磁盤。這將減少由於磁盤空間耗盡而導致崩潰的可能性,但不會完全消除。特別是,如果消息正在快速分頁,則可能會在兩次運行磁盤空間監視器之間的時間內耗盡磁盤空間並崩潰。更保守的方法是將限制設置為與系統上安裝的內存量相同.
配置磁盤可用空間限制
磁盤可用空間限制使用disk_free_limit設置進行配置。默認情況下,數據庫分區上需要50MB空閑空間(請參閱默認數據庫位置的文件位置說明 )。該配置文件將磁盤可用空間限制設置為1GB:
disk_free_limit.absolute = 1000000000
或者你可以使用像這樣的內存單位(KB,MB GB等):
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 分數命令更改限制。該命令將在代理關閉之前生效。當代理重新啟動時效果應該保持不變,相應的配置設置也應該改變。