RabbitMQ内存与磁盘管理

参考:http://www.rabbitmq.com/memory.html

 一、内存管理

RabbitMQ服务器在启动时会计算系统内存总大小。然后会根据vm_memory_high_watermark参数指定的百分比,进行控制.可通过命令 rabbitmqctl set_vm_memory_high_watermark fraction 动态设置。

        默认下,vm_memory_high_watermark的值为0.4,当RabbitMQ使用的内存超过40%时,系统会阻塞所有连接。一旦警报解除(消息被消费者取走,或者消息被写到硬盘中),系统重新恢复工作。

    32位系统的单进程内存使用最大为2G,即使系统有10G,那么内存警报线为2G*40%.

    在日志中可以找到内存限制的相关信息

例如 :/home/data/rabbitmq/log

=INFO REPORT==== 28-Apr-2015::14:11:16 ===

Memory limit set to 3804MB of 7609MB total.


    当vm_memory_high_watermark为0时,不再有内存警报。并且所有的消息发布都将停止。这个方法可用来,如果要禁止消息发布的情况。

    

    二、磁盘管理

    

     在日志中可以找到内存限制的相关信息

        例如 :/home/data/rabbitmq/log

            =INFO REPORT==== 28-Apr-2015::14:11:16 ===

            Disk free limit set to 50MB

            当RabbitMQ内存使用达到预设值,并且阻塞信息发布前,会尝试把内存中的信息输出到磁盘上。持久化信息和非持久化信息都将被写到磁盘。(持 久化信息一进入队列就会被写到磁盘)

            如果磁盘的预设值为50%,内存预设值默认是0.4,那么就是当内存使用量达到20%时,队列信息会被写到磁盘上。

 可以通过设置 vm_memory_high_watermark_paging_ratio (默认值为0.5)来改变写入磁盘的策略,例如:

      

[{rabbit, [{vm_memory_high_watermark_paging_ratio, 0.75},
         {vm_memory_high_watermark, 0.4}]}].

The above configuration starts paging at 30% of memory used, and blocks publishers at 40%.

上面的配置将会在内存全用30%时将队列信息写入到磁盘,阻塞信息发布是在内存使用40%时发生。

    建议vm_memory_high_watermark 不超过50%.






    

你可能感兴趣的:(RabbitMQ内存与磁盘管理)