做公司网站联系公司,门户型网站建设方案,怎么用手机做钓鱼软件或者网站,wordpress多用户登录目录 RabbitMQ 配置简介环境变量配置文件运行时参数和策略RabbitMQ 配置 简介 默认配置#xff0c;已经可以有效地运行RabbitMQ#xff0c;并且在大多数情况下不需要更改配置。不过为了在生产环境中稳定、高效的运行#xff0c;RabbitMQ提供了三种方式来定制化服务 环境变量… 目录 RabbitMQ 配置简介环境变量配置文件运行时参数和策略 RabbitMQ 配置 简介 默认配置已经可以有效地运行RabbitMQ并且在大多数情况下不需要更改配置。不过为了在生产环境中稳定、高效的运行RabbitMQ提供了三种方式来定制化服务 环境变量配置文件运行时参数和策略 配置文件路径可以再启动日志中找到 2019-05-24 01:55:19.253 [info] 0.8.0 Log file opened with Lager
2019-05-24 01:55:19.752 [info] 0.289.0 Starting RabbitMQ 3.7.15 on Erlang 22.0Copyright (C) 2007-2019 Pivotal Software, Inc.Licensed under the MPL. See https://www.rabbitmq.com/
2019-05-24 01:55:19.753 [info] 0.289.0 node : rabbitnode1home dir : /rootconfig file(s) : (none)cookie hash : d/zE3xrt478dueqdlIZiAlog(s) : /opt/rabbitmq_server-3.7.15/var/log/rabbitmq/rabbitnode1.log: /opt/rabbitmq_server-3.7.15/var/log/rabbitmq/rabbitnode1_upgrade.logdatabase dir : /opt/rabbitmq_server-3.7.15/var/lib/rabbitmq/mnesia/rabbitnode1
2019-05-24 01:55:20.262 [info] 0.289.0 Running boot step pre_boot defined by app rabbit期待的配置文件路径 文件不存在可以手动创建 Generic UNIX: $RABBITMQ_HOME/etc/rabbitmq/RPM: /etc/rabbitmq/Windows: %APPDATA%\RabbitMQ 如何检查生效的配置项 [rootnode1 rabbitmq]# rabbitmqctl environment 环境变量 RabbitMQ的环境变量都是以RABBITMQ_开头的可以再shell环境中设置也可以在rabbitmq-env.conf配置文件中设置。 如果在非shell环境中设置需要将“RABBITMQ_”去掉。 配置优先级 shell环境rabbitmq-env.conf配置文件默认的配置rabbitmq-env.conf默认在$RABBITMQ_HOME/etc/rabbitmq/目录下也可以在启动时指定RABBITMQ_CONF_ENV_FILE变量来设置此文件的路径 # Example rabbitmq-env.conf file entries. Note that the variables
# do not have the RABBITMQ_ prefix.
#
# Overrides node name
NODENAMErootnode1# Specifies new style config file location
CONFIG_FILE/etc/rabbitmq/rabbitmq.conf# Specifies advanced config file location
ADVANCED_CONFIG_FILE/etc/rabbitmq/advanced.config 配置项描述默认RABBITMQ_NODE_IP_ADDRESS绑定的网络接口默认为空字符串表示绑定本机所有的网络接口RABBITMQ_NODE_PORT5672RABBITMQ_DIST_PORTRabbitMQ节点内部通信的端口号。如果设置了kernel.inet_dist_listen_min or kernel.inet_dist_listen_max时此环境变量将被忽略RABBITMQ_NODE_PORT 20000RABBITMQ_DISTRIBUTION_BUFFER_SIZE节点之间通信连接的数据缓冲区大小默认为128000,该值建议不要使用低于64MBRABBITMQ_IO_THREAD_POOL_SIZE运行时用于io的线程数建议不要低于32linux默认为128 windows默认为64RABBITMQ_NODENAMErabbitmq节点名称集群中要注意节点名称唯一linux 默认节点名为 rabbit$hostnameRABBITMQ_CONFIG_FILErabbitmq 的配置文件路径注意不要加文件的后缀(.conf)默认 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq(二进制安装) /etc/rabbitmq/rabbitmq(rpm 安装)RABBITMQ_ADVANCED_CONFIG_FILEadvanced.config文件路径默认 $RABBITMQ_HOME/etc/rabbitmq/advanced(二进制安装) /etc/rabbitmq/advanced(rpm 安装)RABBITMQ_CONF_ENV_FILE环境变量配置文件路径默认 $RABBITMQ_HOME/etc/rabbitmq/rabbitmq-env.conf(二进制安装) /etc/rabbitmq/rabbitmq-env.conf(rpm 安装)RABBITMQ_USE_LONGNAMERABBITMQ_SERVICENAME配置文件 在RabbitMQ3.7.0Z之前RabbitMQ配置文件被命名为rabbitmq.config并使用Erlang语法配置。 运行3.7.0或更高版本仍然支持之前的配置但建议使用新的sysctl格式。 sysctl格式与erlang格式配置文件对比 sysctl 格式ssl_options.cacertfile /path/to/testca/cacert.pem
ssl_options.certfile /path/to/server_certificate.pem
ssl_options.keyfile /path/to/server_key.pem
ssl_options.verify verify_peer
ssl_options.fail_if_no_peer_cert true Erlang 格式
[{rabbit, [{ssl_options, [{cacertfile, /path/to/testca/cacert.pem},{certfile, /path/to/server_certificate.pem},{keyfile, /path/to/server_key.pem},{verify, verify_peer},{fail_if_no_peer_cert, true}]}]}
]. sysctl 格式易于自动化部署工具生成和人类编辑相对于Erlang格式 有局限。一些使用深度嵌套的数据结构仍然需要Erlang格式的支持rabbitmq.conf key/value 键值对结构以#开头的为注释行rabbitmq.conf 示例配置项描述默认值listeners要监听 AMQP 0-9-1 and AMQP 1.0 的端口listeners.tcp.default 5672num_acceptors.tcp接受tcp连接的erlang 进程数num_acceptors.tcp 10handshake_timeoutAMQP 0-9-1 超时时间也就是最大的连接时间单位毫秒handshake_timeout 10000listeners.ssl启用TLS的协议默认值为nonenum_acceptors.ssl接受基于TLS协议的连接的erlang 进程数num_acceptors.ssl 10ssl_optionsTLS 配置ssl_options nonessl_handshake_timeoutTLS 连接超时时间 单位为毫秒ssl_handshake_timeout 5000vm_memory_high_watermark触发流量控制的内存阈值可以为相对值(0.5),或者绝对值 vm_memory_high_watermark.relative 0.6 ,vm_memory_high_watermark.absolute 2GB默认vm_memory_high_watermark.relative 0.4vm_memory_calculation_strategy内存使用报告策略assigned使用Erlang内存分配器统计信息 rss使用操作系统RSS内存报告。这使用特定于操作系统的方法并可能启动短期子进程。 legacy使用遗留内存报告运行时认为将使用多少内存。这种策略相当不准确。erlang 与legacy一样 是为了向后兼容vm_memory_calculation_strategy allocatedvm_memory_high_watermark_paging_ratio内存高水位百分比阈值当内存的使用达到阈值时,队列开始将消息分页到磁盘以释放内存vm_memory_high_watermark_paging_ratio 0.5total_memory_available_override_value该参数用于指定系统的可用内存总量一般不使用适用于在容器等一些获取内存实际值不精确的环境获取内存值与实际内存值相差较大默认未设置disk_free_limit存储数据分区的可用磁盘空间限制当可用空间低于阈值时流控将被触发。disk_free_limit.absolute 50MBlog.file.level控制记录日志的等级有info,error,warning,debuglog.file.level infochannel_max最大通道数但不包含协议中使用的特殊通道号0设置为0表示无限制不建议使用该值容易出现channel泄漏过多的channel会增加broker内存的占用channel_max 2047channel_operation_timeout通道操作超时单位为毫秒channel_operation_timeout 15000heartbeat表示连接参数协商期间服务器建议的心跳超时的值。如果两端都设置为0则禁用心跳,不建议禁用heartbeat 60default_vhostrabbitmq安装后启动创建的虚拟主机default_vhost /default_user默认创建的用户名default_user guestdefault_pass默认用户的密码default_pass guestdefault_user_tags默认用户的角色default_user_tags.administrator truedefault_permissions创建默认用户时分配的权限default_permissions.configure .* default_permissions.read .* default_permissions.write .*loopback_users允许通过回环地址连接到rabbitmq的用户列表,如果要允许guest用户远程连接(不安全)请将该值设置为none,如果要将一个用户设置为仅localhost连接的话配置loopback_users.username true(username要替换成用户名)限制用户只能本地连接loopback_users.monitoring true monitoring是用户名loopback_users.guest true(默认guest只能本地连接)cluster_formation.classic_config.nodes配置集群节点 cluster_formation.classic_config.nodes.1 rabbithostname1 cluster_formation.classic_config.nodes.2 rabbithostname2默认nonecollect_statistics统计数据的收集模式主要与 RabbitMQ Management插件相关none 不发出统计信息事件 coarse 每个队列连接都发送统计一次 fine 每发一条消息的统计数据collect_statistics nonecollect_statistics_interval统计数据收集时间间隔以毫秒为单位collect_statistics_interval 5000management_db_cache_multiplier缓存代价较高的查询 缓存将把最后一个查询的运行时间乘以这个值并在此时间内缓存结果。management_db_cache_multiplier 5reverse_dns_lookups设置为 true 让RabbitMQ对客户端连接执行反向DNS查询并通过 rabbitmqctl 和管理插件显示该信息。reverse_dns_lookups falsedelegate_count用于集群内通信的委托进程数。在多核的服务器上我们可以增加此值delegate_count 16tcp_listen_options默认的套接字选项tcp_listen_options.backlog 128 tcp_listen_options.nodelay true tcp_listen_options.linger.on true tcp_listen_options.linger.timeout 0 tcp_listen_options.exit_on_close falsehipe_compile设置为true以使用HiPE预编译RabbitMQ的部分HiPE是Erlang的即时编译器,启用HiPE可以提高吞吐但启动时会延迟几分钟。Erlang运行时必须包含HiPE支持。如果不是启用此选项将不起作用。HiPE在某些平台上根本不可用尤其是Windows。hipe_compile falsecluster_partition_handling如何处理网络分区。有四种方式 ignore、autoheal、pause_minority、pause_if_all_down 。 pause_if_all_down模式需要额外的参数:nodes、recovercluster_partition_handling ignorecluster_keepalive_interval向其他节点发送存活消息的频率。单位为毫秒。丢失存活消息不会导致节点被认为已失效cluster_keepalive_interval 10000queue_index_embed_msgs_below消息的字节大小,小于该大小消息将直接嵌入队列索引中 单位为Bqueue_index_embed_msgs_below 4096mnesia_table_loading_retry_timeout等待集群中Mnesia表可用的超时时间单位毫秒mnesia_table_loading_retry_timeout 30000mnesia_table_loading_retry_limit集群启动时等待Mnesia表的重试次数不适用于Mnesia升级或节点删除mnesia_table_loading_retry_limit 10mirroring_sync_batch_size要在队列镜像之间同步的消息的批处理大小mirroring_sync_batch_size 4096queue_master_locator队列的定位的策略即创建队列时以什么策略判断坐落的broker节点。如果配置了镜像则这里指master镜像的定位策略。可用的策略 min-mastersclient-localrandomqueue_master_locator client-localproxy_protocol如果设置为true ,则连接需要通过反向代理连接不能直连接proxy_protocol falseadvanced.config 一些不能使用sysctl格式的配置项或者使用sysctl格式不方便的配置项可以使用Erlang术语格式的配置文件 advanced.config 示例配置项描述默认值msg_store_index_module设置队列索引使用的模块消息存储调优 Default: rabbit_msg_store_ets_index {rabbit,[{msg_store_index_module, rabbit_msg_store_ets_index}]}backing_queue_module队列内容的实现模块。{rabbit, [{backing_queue_module, rabbit_variable_queue}]}msg_store_file_size_limit消息储存的文件大小,现有的节点更改是危险的可能导致数据丢失Default: 16777216 {rabbit, [ %% Changing this for a node %% with an existing (initialised) database is dangerous can %% lead to data loss! {msg_store_file_size_limit, 16777216} ]} trace_vhosts内部的tracer使用不建议更改{rabbit, [ {trace_vhosts, []} ]}msg_store_credit_disc_bound设置消息储存库给队列进程的积分,默认一个队列进程被赋予4000个消息积分{rabbit, [ {msg_store_credit_disc_bound, {4000, 800}} ]}queue_index_max_journal_entries队列的索引日志超过该阈值将刷新到磁盘{rabbit, [ {queue_index_max_journal_entries, 32768} ]}lazy_queue_explicit_gc_run_operation_threshold在使用惰性队列lazy queue时进行内存回收动作的阈值。值底性能降低值高性能提高但是会导致更高的内存消耗。{rabbit, [ {lazy_queue_explicit_gc_run_operation_threshold, 1000} ]}queue_explicit_gc_run_operation_threshold在使用正常队列时进行内存回收动作的阈值。值低降低性能值高性能提高但是会消耗更多的内存。{rabbit, [ {queue_explicit_gc_run_operation_threshold, 1000} ]}运行时参数和策略 rabbitmq中大部分配置都可以在配置文件中完成重启后生效但有些配置不适合写在配置文件中 比如有些需要更改需要立即生效 Parameter可以通过rabbitmqctl或者管理插件提供的HTTP API来设置。 Parameter分为两种 vhost级别 绑定到vhost。由组件名称component name、名称name和值组成global级别 不绑定vhost全局生效。由名称和值组成未完待续 参考 RabbitMQ官网 https://www.rabbitmq.com/ 《RabbitMQ实战指南》 RabbitMQ生产部署指南 https://www.cnblogs.com/operationhome/p/10483840.html 转载于:https://www.cnblogs.com/mldblue/articles/10939276.html