Сегодня будем профилировать Linux сервисы.
В прошлый раз мы с тобой посмотрели, как без хуйни обращаться с юнитами.
Сегодня же посмотрим, как определить какие юниты дольше всего грузятся при старте системы.
Запускаем и смотрим:
systemd-analyze blame
По итогу получаем список юнитов и их время запуска.
17.084s docker.service
10.961s systemd-journal-flush.service
7.595s containerd.service
7.496s cloud-final.service
7.189s cloud-init-local.service
3.260s apt-daily-upgrade.service
2.522s cloud-init.service
2.095s dpkg-db-backup.service
1.991s networkd-dispatcher.service
1.963s chrony.service
В моём примере дольше всего грузится служба с докером. Отрубаем службу и радуемся приросту в 17 секунд. Но НЕТ! На самом деле тут всё немного сложнее.
Иногда сам юнит стартует достаточно быстро, но сука ждет другой юнит, который «Блиц — скорость без границ».
Смотрим цепочку зависимостей:
systemd-analyze critical-chain
└─docker.socket @13.269s +8ms
└─sysinit.target @13.261s
└─cloud-init.service @10.735s +2.522s
└─systemd-networkd-online.service @12.806s +31ms
└─systemd-networkd.service @12.741s +59ms
Ага, то есть дело тут не только в юните докера, юнит ждет другой юнит, в нашем случае докер ждет пока на сервере поднимется сетка.
То есть docker.service зависит от systemd-networkd-wait-online.service, ну и дальше пошли по цепочке.
Почему так?
Docker по умолчанию может иметь After=network-online.target, а при использовании systemd-networkd это приводит к ожиданию systemd-networkd-wait-online.service.
А чё делать?
Выйти из айти, купить яхту и поехать ловить крабов.
Если тебе нужно, чтобы Docker НЕ ждал сеть, поменяй юнит:
sudo systemctl edit docker.service
[Unit]
After=network.target
Wants=network.target
Ну или вообще убрать After=network-online.target, если нет зависимости от сети на старте.
После этого снова смотрим выхлоп через blame:
4.739s cloud-init-local.service
4.041s containerd.service
2.329s dev-sda1.device
Всё блядь! Теперь докер не тормозит загрузку, но после загрузки системы докер исправно работает.
Забирай в копилку, для дебага маст-хев!








Комментарии