Вопрос или проблема
Я пытаюсь обновить мой jumphost с Ubuntu 20.04 до Ubuntu 24.04.2 LTS с включенным аудитом.
Вот моя конфигурация:
$ cat /etc/audit/rules.d/000.audit.rules
-D
-b 64
-r 1000
-f 1
# Логирование всех пользовательских команд
-a always,exit -F arch=b64 -S execve -F auid>=1000 -F auid!=4294967295 -k user_commands
-a always,exit -F arch=b32 -S execve -F auid>=1000 -F auid!=4294967295 -k user_commands
...
Но когда пользователи входят в систему (40-70 пользователей), я заметил, что система потребляет всю оперативную память, поскольку использование памяти представляет собой буферы ядра, которые используются из-за ограничения скорости, что приводит к деградации системы вплоть до зависания.
$ grep -E 'Slab|SReclaimable|SUnreclaim' /proc/meminfo && free -m
Slab: 2690568 kB
SReclaimable: 14672 kB
SUnreclaim: 2675896 kB
total used free shared buff/cache available
Mem: 2972 2961 70 0 56 10
Swap: 4521 467 4054
Это не происходит в Ubuntu 20.
есть идеи, как это исправить?
спасибо за помощь.
Ответ или решение
Теория
Проблема с SReclaimable и высоким использованием оперативной памяти на Ubuntu 24.04.2 LTS при включённом auditd
может быть вызвана различиями в работе ядра или конфигурации системы по сравнению с Ubuntu 20.04. Основной проблемой может быть недостаточная оптимизация параметров ядра для аудита, а также потенциальные изменения в обрабатываемых процессах системы.
Slab Allocation – это комплекс выделения памяти в ядре Linux, часто используемый для структур данных ядра. Он состоит из двух частей: SReclaimable и SUnreclaim. SReclaimable – это часть, которую можно вернуть операционной системе, если память потребуется для других задач, тогда как SUnreclaim означает те части памяти, которые, по сути, зафиксированы за ядром и не могут быть легко возвращены системе.
Пример
Из описанной ситуации видно, что на Ubuntu 24.04.2 LTS большое количество памяти оказывается в SUnreclaim, что блокирует её для переиспользования другими процессами. Это особенно остро ощущается при большом количестве пользователей, когда каждый выполняет команды, которые отслеживаются через auditd
.
Ваш текущий конфигурационный файл auditd
имеет стандартные правила для отслеживания пользовательских команд:
-D
-b 64
-r 1000
-f 1
# Логирование всех пользовательских команд
-a always,exit -F arch=b64 -S execve -F auid>=1000 -F auid!=4294967295 -k user_commands
-a always,exit -F arch=b32 -S execve -F auid>=1000 -F auid!=4294967295 -k user_commands
Применение
Для решения проблемы попробуем подойти с нескольких сторон:
-
Тюнинг конфигурации
auditd
:-
Увеличьте размер буфера (
-b
) и предел скорости (-r
). Попробуйте значения выше текущих, чтобы уменьшить количество раз, когда события группируются и отправляются. В процессе мониторинга увеличенных настроек на живой системе определите оптимальные параметры:-b 128 -r 2000
-
Отключите или скорректируйте другие конфигурации
auditd
, чтобы уменьшить объем обрабатываемых данных. Убедитесь, что аудит выполняется только для наиболее необходимых процессов.
-
-
Изменение конфигурации ядра:
- Проверьте
vm.min_free_kbytes
и другие параметры ядра в/etc/sysctl.conf
, которые могут повлиять на поведение памяти. Оптимизация может включать, но не ограничиваться следующими параметрами:vm.swappiness=10 vm.dirty_ratio=10 vm.dirty_background_ratio=5
- Проверьте
-
Анализ логов и метрик:
- Изучите лог-файлы в
/var/log/audit/
и системные логи для выявления необработанных ошибок или предупреждений, связанных сauditd
и его работой при большой нагрузке.
- Изучите лог-файлы в
-
Мониторинг и анализ производительности:
- Регулярно используйте инструменты, такие как
top
,htop
, иatop
для мониторинга использования памяти в реальном времени. Это поможет вам в быстром выявлении процессов, влияющих на память.
- Регулярно используйте инструменты, такие как
-
Обновление и патчи:
- Убедитесь, что у вас установлены все последние обновления и патчи для Ubuntu 24.04.2 LTS. Проверяйте списки известных багов и решение от разработчиков для этой версии.
-
Проверка устройств и компонентов:
- Убедитесь, что работающие драйверы и встроенные компоненты вашей системы совместимы с новой версией ядра. Неправильные или устаревшие драйверы могут также вести к неэффективному управлению памятью.
Через столь многосторонний подход вы сможете минимизировать отрицательное воздействие использования auditd
на вашу систему. Рекомендую также связываться с профессиональными сообществами и поддержкой Ubuntu в случае дальнейших затруднений.