RabbitMQ 최적화는 처리량과 신뢰성 기능의 균형, consumer와 connection 튜닝, 리소스 관리를 포함합니다. 성능 요인과 트레이드오프를 이해하는 것은 고성능 RabbitMQ에 중요합니다.
처리량 vs 신뢰성 트레이드오프
신뢰성 기능에는 성능 비용이 있음:
→ 영속성(durable/persistent) → 디스크 쓰기 → 느리지만 durable
→ PUBLISHER CONFIRM / ACK → 왕복 → 느리지만 신뢰성 있음
→ 복제(quorum queue) → 오버헤드지만 HA
→ 요구에 따라 튜닝: 최대 신뢰성(느림) vs 최대 처리량(보장 적음)
→ 메시지를 절대 잃으면 안 되는 곳에 persistence/confirm/ack 사용; 손실 허용 시 생략
성능 튜닝
✓ CONSUMER → 병렬성을 위한 충분한 consumer; PREFETCH 튜닝 (높을수록 → 더 높은 처리량)
✓ CONNECTION/CHANNEL → connection 재사용; channel 사용 (많은 connection 열지 말 것);
프로세스당 connection, 스레드/작업당 channel
✓ 배칭(BATCHING) → 가능하면 ack/publish 배칭; publisher confirm을 배치로
✓ 메시지를 작게 유지; 거대한 queue 회피 (큰 백로그에는 lazy queue)
✓ queue가 너무 커지게 두지 말 것 → 메모리/성능에 영향 (consumer가 따라가게 유지)
