systemd-analyze — встроенный инструмент для диагностики. Показывает какие сервисы жрут время при старте и где система простаивает.
Быстрая диагностика
Проверить общее время загрузки:
Результат:
Startup finished in 3.2s (firmware) + 2.1s (loader) +
1.8s (kernel) + 12.4s (userspace) = 19.5s
Сразу видно проблему — userspace съел 12 секунд из 19. Копаем дальше.
Смотрим топ медленных сервисов:
systemd-analyze blame
8.234s postgresql.service
2.891s docker.service
1.456s NetworkManager-wait-online.service
0.234s nginx.service
PostgreSQL стартует 8 секунд. Может база огромная, либо что-то не так с конфигом.
Сервисы запускаются не параллельно, а друг за другом по зависимостям:
systemd-analyze critical-chain
graphical.target @19.2s
└─multi-user.target @19.1s
└─postgresql.service @10.8s +8.2s
└─network.target @10.7s
└─NetworkManager.service @8.2s +2.4s
Видно: postgresql ждёт сеть, сеть ждёт NetworkManager. И все остальные сервисы встали в очередь за базой.
График покажет картину целиком:
systemd-analyze plot > boot.svg
firefox boot.svg
Получаете таймлайн с цветными полосками — когда каждый сервис стартовал, сколько времени занял, кто с кем параллелился. Узкие места видны сразу.
Узнать время старта отдельного сервиса:
systemd-analyze blame | grep nginx
Или посмотреть его зависимости:
systemd-analyze critical-chain nginx.service
Больше не нужно гадать почему сервер грузится как чугунный мост.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера