Что это значит

Сервисы RX работают с RabbitMQ через каналы: открывают канал, создают очередь или забирают сообщение и закрывают канал. Если брокер не ответил на закрытие канала вовремя, сервис пишет RabbitMQ channel is failed to close due to timeout. и идёт дальше. Похожие записи RabbitMQ operation timeout. [CreateQueue...] и [CreateConsumer...] значат, что брокер не успел создать очередь или подписчика, а Cannot recreate consumer for '...' queue что сервис не смог заново подписаться на очередь после сбоя.

Единичные записи бывают при любом кратком подвисании брокера. Постоянный фон из тысяч таких записей в сутки значит, что RabbitMQ всё время отвечает медленно. Часть сервисов RX забирает сообщения опросом очереди, и при медленном брокере записи о каналах копятся быстро.

Как проверить

  1. Сколько каналов и соединений держит брокер и не растёт ли их число:
rabbitmqctl list_connections name channels | wc -l
rabbitmq-diagnostics observer   # интерактивно: нагрузка по процессам Erlang
  1. Нагрузка на узлы брокера: процессор, диск, нет ли защиты по памяти или диску (rabbitmq-diagnostics check_local_alarms).
  2. Совпадение по времени с ошибками Error occurred while publishing и с перезапусками узлов.

Что сделать

  1. Если записи единичные и совпадают с перезапуском брокера или сервиса, считать их фоном.
  2. Если фон постоянный, разбирать производительность RabbitMQ: диски, число очередей, ресурсы узлов. Кворумные очереди пишут каждое сообщение на диск нескольких узлов, и медленный диск одного из них тормозит всю запись.
  3. После долгой недоступности брокера проверить, что сервисы RX действительно переподключились: если в журнале нет новых записей о подключении, сервис надо перезапустить.