SystemdDoctor
служба не работает rabbitmq диск память

RabbitMQ: тревога по свободному месту блокирует отправителей

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

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Свободного места меньше порога

    Порог по умолчанию равен объёму памяти машины: на сервере с 16 ГБ памяти брокер требует 16 ГБ свободного места.

  2. Память превысила порог

    При превышении доли памяти брокер тоже блокирует отправителей. Обычно это следствие разросшихся очередей.

  3. Очереди без ограничения длины

    Очередь без предела растёт, пока не съест память или диск. Это вопрос описания очередей, а не настройки брокера.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Активные тревоги брокера.

sudo rabbitmq-diagnostics alarms

Самые большие очереди.

sudo rabbitmqctl list_queues name messages | sort -k2 -rn | head

Место и память машины.

df -h /var/lib/rabbitmq && free -h

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Свободного места меньше порога
Почему происходит
Порог по умолчанию равен объёму памяти машины: на сервере с 16 ГБ памяти брокер требует 16 ГБ свободного места.
Как проверить
Посмотрите тревоги и место.
sudo rabbitmq-diagnostics alarms 2>/dev/null
df -h /var/lib/rabbitmq
Как исправить
Освободите место или уменьшите порог осознанно: он защищает от ситуации, когда брокеру некуда сбросить очереди.
2. Память превысила порог
Почему происходит
При превышении доли памяти брокер тоже блокирует отправителей. Обычно это следствие разросшихся очередей.
Как проверить
Посмотрите память и очереди.
sudo rabbitmq-diagnostics memory_breakdown 2>/dev/null | head
sudo rabbitmqctl list_queues name messages | sort -k2 -rn | head
Как исправить
Разберитесь с очередями: получатели должны успевать за отправителями. Поднятие порога лишь отодвигает предел.
3. Очереди без ограничения длины
Почему происходит
Очередь без предела растёт, пока не съест память или диск. Это вопрос описания очередей, а не настройки брокера.
Как проверить
Посмотрите самые большие очереди.
sudo rabbitmqctl list_queues name messages memory | sort -k2 -rn | head
Как исправить
Задайте очередям предел длины или срок жизни сообщений: тогда рост будет ограничен по определению.

Пример вывода

Тревога по свободному месту блокирует отправителей. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

rabbitmq[1200]: disk resource limit alarm set. **********************************************************
rabbitmq[1200]: *** Publishers will be blocked until this alarm clears ***
app[4100]: warn: publish timeout after 30s (connection blocked)

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация RabbitMQ: тревоги по ресурсам документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено заполнением раздела с данными брокера.
    собственная проверка, systemd 255
    сверено 15 сентября 2026