启动耗时怎么看
systemd-analyze 用来量化开机时间:time 把总时长拆成固件、引导加载器、内核与用户态四段;blame 按耗时排序列出各单元;critical-chain 展示关键路径上的依赖链;plot 生成时间轴图。三者结合才能定位真正的启动瓶颈,适用于所有 systemd 发行版。
基本信息
| 总览 | systemd-analyze time |
|---|---|
| 排序 | systemd-analyze blame |
| 关键链 | systemd-analyze critical-chain |
| 图形 | systemd-analyze plot > /tmp/boot.svg |
| 校验 | systemd-analyze verify <单元> |
典型使用场景
- 开机时间变长,定位是哪一阶段拖慢
- 裁剪多余服务前评估各单元的实际开销
- 交付验收时给出量化的开机时间数据
- 排查某服务能否正常启动,用 verify 做静态校验
- 对比两次重启数据,确认优化是否有效
分析命令
分析命令
systemd-analyze time # 各阶段耗时总览
systemd-analyze blame | head -20 # 按耗时排序的单元清单
systemd-analyze critical-chain | head -30 # 关键路径与阻塞点
systemd-analyze plot > /tmp/boot.svg # 生成启动时间轴图
systemd-analyze verify /etc/systemd/system/myapp.service # 单元语法与引用校验
journalctl -b -o short-monotonic | head -20 # 结合日志看时间顺序子命令对照
| 子命令 | 输出内容 | 用途 |
|---|---|---|
| time | 各阶段耗时分解 | 先判断瓶颈在固件还是用户态 |
| blame | 按耗时排序的单元 | 找候选优化对象 |
| critical-chain | 关键路径依赖链 | 确认真正的阻塞点 |
| plot | 启动时间轴图 | 向他人展示与复盘 |
| verify | 单元文件校验 | 改配置后做静态检查 |
blame 的数值包含等待依赖的时间,排在前面的单元不一定自身慢;要判断真实瓶颈应结合 critical-chain 看关键路径。
对比数据要在相近条件下采集:长期未重启的机器数据参考价值低,先安排在业务低峰做一次重启再测量。
常见拖慢项
- 网络等待:等待链路就绪的目标耗时较长
- 云初始化:云平台代理服务启动慢
- 文件系统检查:大容量分区自检耗时
- 固件阶段:主板与带外管理初始化偏慢
- 串行依赖:多个单元按顺序等待