Ubuntu Server 启动慢怎么排查?systemd-analyze 实战思路
服务器重启后启动变慢,常见原因包括磁盘挂载、网络等待、服务依赖和 cloud-init,本文用 systemd-analyze 梳理排查路径。
Linux 服务器启动慢,很多人第一反应是看 CPU、内存或磁盘性能。但启动阶段的问题往往和 systemd 服务依赖、磁盘挂载等待、网络初始化、DNS 或 cloud-init 有关。
systemd-analyze 是排查启动慢的第一工具。它可以告诉你系统总启动时间、内核时间、用户空间时间,以及每个服务耗时。
常用命令
查看整体耗时:
systemd-analyze
查看服务耗时排序:
systemd-analyze blame
查看依赖链关键路径:
systemd-analyze critical-chain
这些命令不要孤立看。blame 里耗时长的服务不一定阻塞启动,critical-chain 才能帮助判断真正影响启动路径的依赖。
常见问题
第一是 /etc/fstab 配置错误。云盘、NFS 或旧磁盘 UUID 不存在,会导致系统等待超时。生产环境建议给非关键挂载加 nofail 和合理 timeout。
第二是网络等待。某些服务依赖 network-online.target,如果 DHCP、DNS 或网卡配置异常,启动会明显变慢。
第三是 cloud-init。云服务器初始化脚本、源配置、SSH Key 或元数据服务异常,都可能拖慢首次启动。
第四是自定义服务依赖写得过重。很多业务服务其实只需要网络可用,却依赖了不必要的目标。
运维建议
启动慢排查要保留两份数据:正常基线和异常现场。上线前记录一次 systemd-analyze blame,后续变慢时就能对比。
对于关键服务器,重启不是小事。把启动耗时纳入巡检,可以提前发现磁盘挂载、服务依赖和云初始化问题。
