以下是Debian系统下RabbitMQ的性能优化方法:
一、配置优化
- 调整内存参数:修改/etc/rabbitmq/rabbitmq.conf,设置vm_memory_high_watermark(如0.6,内存占用60%时触发流控)和vm_memory_high_watermark_paging_ratio(如0.5,内存占用50%时开始将消息持久化到磁盘)。
- 优化队列设置:
- 启用lazy queue(channel.queueDeclare(..., true))将消息存储到磁盘,减少内存占用。
- 设置合理的队列长度限制和消息过期时间,避免堆积。
 
- 优化交换机类型:根据场景选择direct或topic类型(路由效率高),避免使用fanout广播类型。
二、硬件与系统优化
- 使用SSD存储:显著提升消息读写速度,避免使用HDD。
- 增加内存与CPU:提升消息缓存和处理能力,多核CPU可优化Erlang虚拟机调度。
- 优化网络带宽:确保客户端与Broker在同一局域网,或升级带宽以应对高吞吐场景。
三、性能监控与调优
- 启用管理插件:通过Web界面或REST API监控队列长度、内存使用、消费者状态等。
- 结合Prometheus+Grafana:可视化监控指标,设置告警规则(如内存占用过高、消息积压)。
四、客户端优化
- 连接复用:使用连接池(如Spring的CachingConnectionFactory)避免频繁创建连接。
- 批量确认(QoS):设置prefetch count(如10~100)控制未确认消息量,配合手动确认模式提升吞吐量。
五、集群与扩展
- 部署集群:通过镜像队列实现高可用,水平扩展节点提升吞吐量。
- 负载均衡:使用负载均衡器(如Nginx)分发客户端请求到不同节点。
六、其他优化
- 禁用非必要插件:减少资源占用,仅保留必需功能。
- 优化TCP参数:调整内核参数(如net.core.rmem_max)提升网络传输效率。
参考来源: