kernel: audit: backlog limit exceeded
Подсистема аудита складывает события в очередь. При переполнении события теряются, а при определённой настройке система начинает блокировать процессы — и тогда службы заметно замедляются без видимой причины.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Правил аудита слишком много
Широкие правила порождают поток событий, который приёмник не успевает обрабатывать.
-
Очередь мала для нагрузки
Размер очереди задаётся отдельно. При высокой нагрузке значение по умолчанию мало.
-
Приёмник событий не работает
Если служба аудита остановлена, события копятся в очереди и теряются, а ядро пишет об этом.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Состояние подсистемы: очередь, потери, режим.
sudo auditctl -sСообщения о переполнении очереди.
journalctl -k -b --no-pager | grep -i "audit.*backlog" | tailЧисло действующих правил.
sudo auditctl -l | wc -lРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Широкие правила порождают поток событий, который приёмник не успевает обрабатывать.
- Как проверить
-
Посмотрите правила и статистику.
sudo auditctl -l 2>/dev/null | head sudo auditctl -s 2>/dev/null
- Как исправить
- Сузьте правила до того, что действительно нужно. Правила на весь доступ к файлам порождают события на каждую операцию.
- Почему происходит
- Размер очереди задаётся отдельно. При высокой нагрузке значение по умолчанию мало.
- Как проверить
-
Посмотрите размер очереди.
sudo auditctl -s 2>/dev/null | grep -i backlog
- Как исправить
- Увеличьте размер очереди. Это даёт запас, но не отменяет необходимости сузить правила.
- Почему происходит
- Если служба аудита остановлена, события копятся в очереди и теряются, а ядро пишет об этом.
- Как проверить
-
Посмотрите состояние службы аудита.
systemctl status auditd --no-pager | head -6
- Как исправить
- Запустите службу аудита или отключите правила, если аудит не нужен: очередь без приёмника бессмысленна.
Пример вывода
Очередь аудита переполнена, события теряются. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
kernel: audit: backlog limit exceeded
kernel: audit: audit_backlog=8193 > audit_backlog_limit=8192
kernel: audit: audit_lost=14028 audit_rate_limit=0 audit_backlog_limit=8192
Связанные ошибки
- SELinux: avc denied в журнале аудита SELinux запретил операцию службе: как прочитать запись аудита, найти метку и исправить без отключения защиты.
- Сообщения в журнале пропадают: сработало ограничение частоты Suppressed messages: journald отбрасывает записи болтливой службы. Как поднять предел точечно.
- nf_conntrack: table full, dropping packet Соединения обрываются под нагрузкой: заполнена таблица отслеживания соединений ядра.
- Elasticsearch: max virtual memory areas vm.max_map_count is too low Elasticsearch отказывается стартовать из-за заниженного vm.max_map_count. Как поднять значение и закрепить его.
- No buffer space available в журнале службы Ошибка 105: нет места в буферах ядра. Разбор для сети и таблиц соседей.
- TCP: out of memory -- consider tuning tcp_mem Ядру не хватает памяти под сетевые буферы: соединения рвутся, служба отвечает с перебоями.
- VFS: file-max limit reached: в системе кончились описатели Общесистемный предел числа открытых файлов исчерпан: службы перестают принимать соединения и открывать файлы.
- Cannot allocate memory в журнале службы Не удалось выделить память: предел службы, память машины, настройка overcommit, исчерпанные области отображения.
Источники
-
auditctl(8)
Правила аудита и параметры очереди. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено широким правилом аудита на файловые операции.