优化 RabbitMQ 涉及在吞吐量和可靠性功能之间取得平衡,调整 consumer 和 connection,以及管理资源。理解性能因素和权衡对于高性能 RabbitMQ 至关重要。
吞吐量与可靠性的权衡
Reliability features have a PERFORMANCE COST:
→ PERSISTENCE (durable/persistent) → disk writes → slower but durable
→ PUBLISHER CONFIRMS / ACKS → round-trips → slower but reliable
→ REPLICATION (quorum queues) → overhead but HA
→ TUNE based on needs: max reliability (slower) vs max throughput (fewer guarantees)
→ use persistence/confirms/acks where messages MUST NOT be lost; skip where loss is OK
性能调优
✓ CONSUMERS → enough consumers for parallelism; tune PREFETCH (higher → more throughput)
✓ CONNECTIONS/CHANNELS → reuse connections; use channels (don't open many connections);
connection per process, channel per thread/task
✓ BATCHING → batch acks/publishes where possible; publisher confirms in batches
✓ Keep messages SMALL; avoid huge queues (use lazy queues for large backlogs)
✓ Don't let queues grow huge → impacts memory/performance (keep consumers keeping up)
