以下是Ubuntu下RabbitMQ应对高并发的解决方案,涵盖配置优化、硬件升级、架构设计等核心方向:
/etc/security/limits.conf
中设置rabbitmq soft/hard nofile 65536
。vm.dirty_ratio=10
,vm.dirty_background_ratio=5
,减少磁盘写入延迟。vm_memory_high_watermark.relative=0.7
,避免过早触发流控。disk_free_limit=2GB
,确保有足够空间处理消息堆积。max_connections=65536
,支持高并发客户端接入。Quorum Queue
(强一致性)或Stream Queue
(高吞吐),避免Classic Queue
的性能瓶颈。x-dead-letter-exchange
处理失败消息,防止队列积压。channel.txSelect()
开启事务或批量确认,减少网络往返。CachingConnectionFactory
)避免频繁创建连接。prefetch count=10~100
,避免单个消费者积压过多未确认消息。ha-mode=exactly
),实现故障自动转移。durable=true
,并配置mirrored queues
防止数据丢失。rabbitmq-plugins enable rabbitmq_management
),通过Web界面查看队列长度、消费者状态。/var/log/rabbitmq/rabbit@hostname.log
,排查异常消息或连接问题。prefetch count=1
配合手动确认,防止消费者过载。Stream Queue
替代传统队列,支持高吞吐的批量消费。参考来源: