• RabbitMQ 内存控制 硬盘控制


    一、内存控制:

    vm_memory_high_watermark 该值为内存阈值,默认为0.4。意思为物理内存的40%。40%的内存并不是内存的最大的限制,它是一个发布的节制,当达到40%时Erlang会做GC。最坏的情况是使用内存80%。如果把该值配置为0,将关闭所有的publishing 。

    rabbitmqctl set_vm_memory_high_watermark 0

    Paging 内存阈值,该值为默认为0.5,该值为vm_memory_high_watermark的20%时,将把内存数据写到磁盘。

    如机器内存16G,当RABBITMQ占用内存1.28G(16*0.4*0.2)时把内存数据放到磁盘。

    二、硬盘控制:

    当RabbitMQ的磁盘空闲空间小于50M(默认),生产者将被BLOCK,

    如果采用集群模式,磁盘节点空闲空间小于50M将导致其他节点的生产者都被block

    可以通过disk_free_limit来对进行配置。

    ------------------------------------------------------------------

    可以修改rabbitmq-env.conf配置文件:

    [{rabbit,[{vm_memory_high_watermark,0.6}]}].

    或者设置成固定值:

    [{rabbit,[{vm_memory_high_watermark,{absolute,1073741824}}]}].也就是1024MB.

    如果要在broker运行过程中修改,则rabbitmqctl set_vm_memory_high_watermark 0.6

    -------------------------------------------------

    三. 配置
    /usr/local/rabbitmq/sbin目录下
    rabbitmq-env 环境配置
    rabbitmq-defaults 默认参数设置
    rabbitmqctl 管理工具
    rabbitmq-plugins 插件管理工具
    rabbitmq-server rabbitmq服务

    # vim rabbitmq-defaults

    主要配置文件
    1. enabled_plugins:设置允许的插件列表,格式如下:

    2. rabbitmq.config:设置rabbitmq运行参数。结构为hash数组格式。如

    其中几个关键参数为:
    tcp_listerners 设置rabbimq的监听端口,默认为[5672]。
    disk_free_limit 磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative, 1.0},即与内存相关联1:1,也可定制为多少byte.
    vm_memory_high_watermark,设置内存低水位线,若低于该水位线,则开启流控机制,默认值是0.4,即内存总量的40%。
    hipe_compile 将部分rabbimq代码用High Performance Erlang compiler编译,可提升性能,该参数是实验性,若出现erlang vm segfaults,应关掉。
    force_fine_statistics, 该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。
    /usr/local/etc/rabbitmq/rabbitmq.config
    [{auth_backends,[rabbit_auth_backend_internal]},
    {auth_mechanisms,['PLAIN','AMQPLAIN']},
    {backing_queue_module,rabbit_variable_queue},
    {cluster_nodes,[]},
    {collect_statistics,fine},
    {collect_statistics_interval,5000},
    {default_permissions,[<<".*">>,<<".*">>,<<".*">>]},
    {default_user,<<"guest">>},
    {default_user_tags,[administrator]},
    {default_vhost,<<"/">>},
    {delegate_count,16},
    {error_logger,{file,"/usr/local/var/log/rabbitmq/rabbit@Technophiliac.log"}},
    {frame_max,131072},
    {hipe_compile,false},
    {included_applications,[]},
    {msg_store_file_size_limit,16777216},
    {msg_store_index_module,rabbit_msg_store_ets_index},
    {queue_index_max_journal_entries,262144},
    {sasl_error_logger,{file,"/usr/local/var/log/rabbitmq/rabbit@Technophiliac-sasl.log"}},
    {server_properties,[]},
    {ssl_listeners,[]},
    {ssl_options,[]},
    {tcp_listen_options,
    [binary,
    {packet,raw},
    {reuseaddr,true},
    {backlog,128},
    {nodelay,true},
    {exit_on_close,false}]},
    {tcp_listeners,[5672]},
    {trace_vhosts,[<<"/">>]},
    {vm_memory_high_watermark,0.4}]
    3. rabbitmq-env.conf rabbitmq环境参数配置

    更详细的配置参见: http://www.rabbitmq.com/configure.html#configuration-file

    4. 启动

    四. rabbitmq插件管理
    启用rabbitmq web管理插件

    列出所有插件

  • 相关阅读:
    5、依赖倒转原则
    4、开放-封闭原则
    3、单一职责原则
    2013年工作生活总结
    2、策略模式
    1、简单工厂模式
    Unity3D笔记四 基础知识概念
    PythonStudy——PyCharm使用技巧 Column Selection Mode(列选择模式)
    PythonStudy——函数对象的案例
    PythonStudy——函数嵌套定义 Function nesting definition
  • 原文地址:https://www.cnblogs.com/zhengchunyuan/p/9262836.html
Copyright © 2020-2023  润新知