Suppressed N messages from unit: часть записей потеряна
journald ограничивает частоту записей от одного источника, чтобы одна служба не вытеснила из журнала всё остальное. При превышении лишние записи отбрасываются, а в журнале появляется сообщение о числе отброшенных. Разбор сбоя по такому журналу неполон, и об этом важно знать.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Служба пишет слишком часто
Отладочный вывод или цикл ошибок даёт сотни записей в секунду. Предел срабатывает, и часть картины исчезает.
-
Предел мал для нормальной работы службы
Некоторые службы штатно пишут много: прокси, брандмауэры, почта. Для них предел по умолчанию тесен.
-
Разбор ведётся по неполному журналу
Главная опасность не в потере записей, а в неверных выводах: искомой строки может не быть просто потому, что её отбросили.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Сколько записей и от кого было отброшено.
journalctl -b --no-pager | grep -i suppressed | tailДействующие пределы частоты.
systemd-analyze cat-config systemd/journald.conf | grep -i RateLimitПределы для конкретной службы.
systemctl show myapp.service -p LogRateLimitIntervalSec -p LogRateLimitBurstРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Отладочный вывод или цикл ошибок даёт сотни записей в секунду. Предел срабатывает, и часть картины исчезает.
- Как проверить
-
Найдите источник и число отброшенных записей.
journalctl -b --no-pager | grep -i "Suppressed" | tail -5
- Как исправить
- Снизьте подробность вывода службы. Если поток ошибок — это и есть сбой, разбирайтесь с ним: поднимать предел для маскировки не нужно.
- Почему происходит
- Некоторые службы штатно пишут много: прокси, брандмауэры, почта. Для них предел по умолчанию тесен.
- Как проверить
-
Посмотрите действующий предел.
systemd-analyze cat-config systemd/journald.conf | grep -iE "RateLimit"
- Как исправить
-
Поднимите предел для всей системы или отключите его для конкретной службы параметром
LogRateLimitIntervalSec=0в её unit-файле.[Service] LogRateLimitIntervalSec=0
- Почему происходит
- Главная опасность не в потере записей, а в неверных выводах: искомой строки может не быть просто потому, что её отбросили.
- Как проверить
-
Проверьте, были ли отбросы в интересующий промежуток.
journalctl --since "10:00" --until "10:05" --no-pager | grep -i suppressed
- Как исправить
- При отбросах в нужном промежутке снимайте вывод службы отдельно, минуя журнал, и повторяйте наблюдение.
Пример вывода
Служба в цикле ошибок превысила предел частоты. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd-journald[300]: Suppressed 3894 messages from myapp.service
myapp[1200]: error: connection refused
systemd-journald[300]: Suppressed 4102 messages from myapp.service
Связанные ошибки
- Журнал занимает слишком много места Журнал разросся: где задаются пределы, как обрезать и почему обрезка иногда не помогает.
- Сообщения в журнале пропадают: сработало ограничение частоты Suppressed messages: journald отбрасывает записи болтливой службы. Как поднять предел точечно.
- Job for … failed because a timeout was exceeded Задание на запуск прервано по таймауту. Как отличить медленный старт от заблокированного и правильно настроить TimeoutStartSec.
- Cannot allocate memory в журнале службы Не удалось выделить память: предел службы, память машины, настройка overcommit, исчерпанные области отображения.
- Disk quota exceeded для службы Место на разделе есть, а запись отклоняется: исчерпана дисковая квота пользователя или группы.
- Elasticsearch: max virtual memory areas vm.max_map_count is too low Elasticsearch отказывается стартовать из-за заниженного vm.max_map_count. Как поднять значение и закрепить его.
- Failed with result 'resources' Состояние resources: systemd не смог выделить ресурсы для запуска службы. Чем отличается от кодов 200-й группы и что проверять.
- File corrupted or uncleanly shut down, renaming and replacing Журнал повреждён после жёсткой перезагрузки: что означает сообщение и когда нужно вмешательство.
Где встречается чаще всего
Источники
-
journald.conf(5)
Ограничение частоты записей. -
systemd.exec(5)
Пределы частоты для отдельной службы. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено службой, пишущей тысячи строк в секунду.