Rabbitmq配置调优

1、参数调优

  • queue_index_embed_msgs_below:
    控制消息的存储位置。是独立存储到msg_store中,还是嵌入消息的索引一并存储。默认值是4096(字节),即小于4KB的消息会嵌入到消息索引中一并存储。**注:**4KB包括消息内容以及消息的属性等元数据信息,其中消息的元数据信息占用至少300字节。配置缺省参数如下:
    在这里插入图片描述

  • num_acceptors.tcp:
    接受TCP侦听器连接的Erlang进程数。Default: 10,这个值直接影响到了另一个值即:connection_max,这个值是在客户端设的,公式如下:最大连接数=connection_max +num_acceptors -1
    在这里插入图片描述

  • handshake_timeout:
    AMQP 0-8/0-9/0-9-1 handshake (在 socket连接和SSL 握手之后)的最大时间, 毫秒为单位.Default: 10000,这边10秒是足够了,不能再长了,再长这个不是网络了,是电话拨号网。
    在这里插入图片描述

  • vm_memory_high_watermark.relative:
    流程控制触发的内存阀值,这个值必须设,设置法则如下:<=16gb内存的机器,设成0.4即MQ最多会使用到16gb*0.4=6.4GB时,阻塞所有的请求,>=32gb内存的机器,设成0.6
    在这里插入图片描述

  • vm_memory_high_watermark_paging_ratio:
    高水位限制的分数,当达到阀值时,队列中消息消息会转移到磁盘上以释放内存。设置机制同vm_memory_high_watermark,只不过它的阀值从0.5~0.6.即当内存的使用达到了50%后,队列开始将消息分页到磁盘。
    在这里插入图片描述

  • disk_free_limit.absolute:
    abbitMQ存储数据分区的可用磁盘空间限制.当可用空间值低于阀值时,流程控制将被触发.此值可根据RAM的总大小来相对设置 (如.{mem_relative, 1.0}).此值也可以设为整数(单位为bytes)或者使用数字单位(如.“50MB”).因此,很多外面都设1GB,这个显然是不够的,因为经如果当RABBITMQ的消息dump可用磁盘还剩1GB时,此时留给你的处理时间已经很短了,一般至少设成10GB。

  • frame_max:
    与客户端协商的允许最大frame大小. 设置为0表示无限制,但在某些QPid客户端会引发bug. 设置较大的值可以提高吞吐量;设置一个较小的值可能会提高延迟。
    在这里插入图片描述

  • initial_frame_max:
    咬合客户端的值,如配置文件描述所示:

  • channel_max:
    与客户端协商的允许最大chanel大小. 设置为0表示无限制.该数值越大,则broker使用的内存就越高.Default: 0
    在这里插入图片描述

  • heartbeat:
    表示心跳延迟(单位为秒) ,服务器将在connection.tune frame中发送.如果设置为 0, 心跳将被禁用. 客户端可以不用遵循服务器的建议, 查看 AMQP reference 来了解详情. 禁用心跳可以在有大量连接的场景中提高性能,但可能会造成关闭了非活动连接的网络设备上的连接落下.Default: 60 (3.5.5之前的版本是580)
    在这里插入图片描述

  • hipe_compile:
    将此选项设置为true,将会使用HiPE预编译部分RabbitMQ,Erlang的即时编译器.这可以增加服务器吞吐量,但会增加服务器的启动时间.你可以看到花费几分钟延迟启动的成本,就可以带来20-50% 更好性能.这些数字与高度依赖于工作负载和硬件.HiPE 支持可能没有编译进你的Erlang安装中.如果没有的话,启用这个选项,并启动RabbitMQ时,会看到警告消息. 例如, Debian / Ubuntu 用户需要安装erlang-base-hipe 包.HiPE并非在所有平台上都可用,尤其是Windows.在 Erlang/OTP 17.5版本之前,HiPE有明显的问题 . 对于HiPE,使用最新的OTP版本是高度推荐的.Default: false


样例配置:


listeners.tcp.default = 5672
 
num_acceptors.tcp = 20
 
handshake_timeout = 10000
 
vm_memory_high_watermark.relative = 0.4
# vm_memory_high_watermark.absolute = 6GB
 
 
vm_memory_calculation_strategy = rss
 
vm_memory_high_watermark_paging_ratio = 0.5
 
disk_free_limit.absolute = 10GB
 
 
frame_max = 131072
 
initial_frame_max = 4096
 
channel_max = 2047
 
heartbeat = 60
 
default_vhost = /
 
hipe_compile = true
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于OpenStack中的RabbitMQ参数调优,以下是一些建议: 1. 内存设置:RabbitMQ使用内存作为缓存,可以通过修改RabbitMQ配置文件(通常位于/etc/rabbitmq/rabbitmq.conf)来调整内存限制。可以根据系统资源和需要进行调整,确保分配足够的内存给RabbitMQ进程。 2. 磁盘设置:RabbitMQ使用磁盘来存储消息和元数据。为了提高性能,建议将RabbitMQ的数据目录放置在高性能磁盘上,并保证有足够的可用磁盘空间。可以通过修改RabbitMQ配置文件来指定数据目录的位置。 3. 连接数设置:RabbitMQ默认限制连接数和每个连接的并发数。如果系统中有大量的客户端连接或者消息处理需求很高,可以通过修改RabbitMQ配置文件来增加连接数和并发数的限制,以满足高并发的需求。 4. 消息确认方式设置:RabbitMQ提供了多种消息确认方式,包括ack、nack和reject。根据具体的业务需求,可以选择合适的消息确认方式。例如,对于性能要求较高的场景,可以选择批量确认方式。 5. 长连接设置:RabbitMQ默认采用长连接方式,即客户端和RabbitMQ之间保持持久化的TCP连接。对于高负载场景,可以考虑使用连接池技术来管理连接,从而减少连接的创建和销毁开销。 6. 高可用设置:如果需要提高RabbitMQ的可用性和容错性,可以考虑使用RabbitMQ的集群和镜像队列功能。集群可以将消息分布在多个节点上,提供更高的可用性;镜像队列可以将消息复制到多个节点上,提供更高的数据冗余和容错性。 以上是一些常见的RabbitMQ参数调优建议,具体的调优策略还需要根据实际情况进行调整和优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值