Задать вопрос
@alexartamonov

Почему низкая скорость публикации сообщений в очередь RabbitMQ?

Добрый день

При одиночной отправки сообщений в RabbitMQ скорость не поднимается выше 20-25 сообщений в секунду.
Если использовать пакетную отправку - все быстро (30к сообщений в секунду легко принимает).
В чем может быть причина?
  • Вопрос задан
  • 472 просмотра
Подписаться 3 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 4
@yarkin
Всё зависит от того какие параметры отказоустойчивости применяются. В RabbitMQ работа одного канала (channel) синхронна, нет параллельной обработки команд. Если есть ожидание подтверждения от сервера и требование записи данных на диск (а RabbitMQ, если ничего не изменилось за последние годы, аггрегирует запись в батчи, чтобы уменишить кол-во IOPS на диск, то есть какое-то ожидание), то это увеличивает временя одной команды. Плюс сетевое RTT.
Если надо посылать как можно больше - открывайте много каналов. Ради интереса попробуйте потестировать на простой очереди в памяти (это должно уменьшить время обработки одной команды).
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Вопрос - странный. Ну если вам нужно быстро - то отправляйте батчем. Собственно - это такой общий паттерн который можно рекомендовать всегда. Как - советовать носить шерстяные штаны зимой.

Почему медленно когда по 1 сообщению? Идей много. Как вариант - виновата сетевая латентность и некие усиленные проверки транзакций или квитирований с вашей стороны. Вот по этому пункту нужно смотреть конфигурации и пинговать и трассировать ваши сети.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
2ord
@2ord
Вообще, AMQP - непростой протокол и в нам есть много взаимодействий по сети. У разных реализаций протокола могут быть разные особенности, даже в пределах того же языка программирования.
Если отправка по интернету, то вообще все может быть менее предсказуемо и соединения могут отваливаться спонтанно, что может приводить к "заморозке" или частым переподключениям.
Не предоставлено никакой информации об:
используемых версиях библиотек и RabbitMQ, рантайма, конфигураций сети, ... как и самого кода.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы