Назад | Перейти на главную страницу

Проблемы с внезапным высоким iowait в кластере RabbitMQ

мы запускаем кластер RabbitMQ с 6 узлами c5.2xlarge на AWS. Версия 3.6.14 на Erlang 19.1. Они работают в контейнерах докеров и монтируют локальный том в / var / lib / rabbitmq / mnesia.

Команда запуска докера выглядит следующим образом:

docker run -d \
    --name rabbitmq \
    --net=host \
    --dns-search=eu-west-1.compute.internal \
    --ulimit nofile=65536:65536 \
    --restart on-failure:5 \
    -p 1883:1883 \
    -p 4369:4369 \
    -p 5672:5672 \
    -p 15672:15672 \
    -p 25672:25672 \
    -e AUTOCLUSTER_TYPE=aws \
    -e AWS_AUTOSCALING=true \
    -e AUTOCLUSTER_CLEANUP=true \
    -e CLEANUP_WARN_ONLY=false \
    -e AWS_DEFAULT_REGION=eu-west-1 \
    -v /mnt/storage:/var/lib/rabbitmq/mnesia \
    dockerregistry/rabbitmq-autocluster:3.6.14

Часть конфигурации RabbitMQ:

[
  {
    rabbit,
    [
      {loopback_users, []},
      {collect_statistics_interval, 10000},
      {cluster_partition_handling, autoheal},
      {delegate_count, 64},
      {fhc_read_buffering, false},
      {fhc_write_buffering, false},
      {heartbeat, 60},
      {background_gc_enabled, true},
      {background_gc_target_interval, 60000},
      {queue_index_embed_msgs_below, 0},
      {queue_index_max_journal_entries, 8192},
      {log_levels, [{connection, error},
                    {channel, warning}]},
      {vm_memory_high_watermark, 0.8},
      {auth_backends,
        [
          rabbit_auth_backend_ldap,
          rabbit_auth_backend_internal
        ]
      }
    ]
  },

  {
    rabbitmq_mqtt,
    [
      {default_user,     <<"**********">>},
      {default_pass,     <<"************">>},
      {allow_anonymous,  false},
      {vhost,            <<"/">>},
      {exchange,         <<"amq.topic">>},
      {subscription_ttl, 1800000},
      {prefetch,         10},
      {ssl_listeners,    []},
      {tcp_listeners,    [1883]},
      {tcp_listen_options,
        [
          binary,
            {packet, raw},
            {reuseaddr, true},
            {backlog, 128},
            {nodelay,   true}
        ]
      }
    ]
  },

В прошлую пятницу вечером количество сообщений в очереди достигло ~ 25 тыс. Сообщений, когда ни с того ни с сего все узлы начали испытывать серьезные проблемы с iowait. Обычно iowait всегда <5, а теперь он начал резко увеличиваться до> 70. Мы проверили машины, но пока не смогли найти разумного объяснения. После того, как мы перевели всю группу автомасштабирования на новые экземпляры, проблема исчезла. Даже в субботу, когда мы достигли той же скорости передачи сообщений. В iotop мы часто видим процесс ведения журнала ext4 наверху. Однако с nvme ssds на машинах c5 мы думаем, что iowait не должно быть проблемой. Мы также проверили сеть и не обнаружили причин для беспокойства.

Любой вклад или подсказки, которые вы могли бы дать, очень ценятся? Что мы можем проверить?