Как устроен механизм Prefetch Count в RabbitMQ и как его некорректная настройка может ухудшить производительность воркеров?

Prefetch Count ограничивает число сообщений, доставленных потребителю, но ещё не подтверждённых. Слишком малое значение оставляет простаивающие ресурсы, слишком большое ухудшает баланс и расход памяти.

Короткий ответ

Что ответить на собеседовании

Prefetch Count ограничивает число сообщений, доставленных потребителю, но ещё не подтверждённых. Слишком малое значение оставляет простаивающие ресурсы, слишком большое ухудшает баланс и расход памяти.

Подробный разбор

Ответ с пояснениями

Prefetch Count ограничивает число сообщений, доставленных потребителю, но ещё не подтверждённых. Слишком малое значение оставляет простаивающие ресурсы, слишком большое ухудшает баланс и расход памяти.

При manual ack брокер перестаёт присылать новые сообщения после заполнения окна и продолжает после подтверждений. В RabbitMQ лимит обычно применяется на consumer, но возможны дополнительные ограничения канала. Значение 0 означает отсутствие такого ограничения. Для долгих неоднородных задач большой prefetch позволяет одному воркеру забрать много работы, пока другие простаивают. Для коротких задач слишком маленькое окно увеличивает влияние сетевой задержки. Подбирайте значение по реальной конкурентности обработки, памяти и latency, а не по размеру очереди.

Источник: www.rabbitmq.com.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее