systemd中怎么利用systemd-analyze命令精准找出拖慢服务器开机启动时间的“罪魁祸首”

舞夢輝影

舞夢輝影

2026-07-28

949人浏览

原创

直接用 systemd-analyze time、blame --no-pager 和 critical-chain 三步即可精准定位开机瓶颈:time 判断 kernel/initrd/userspace 哪段耗时异常;blame 找出耗时 ≥1s 的 service 或 .mount 单元;critical-chain 通过 @ 时间差识别真实阻塞点,如 network-online.target 与 networkmanager-wait-online.service 间 4.3s 等待即为真瓶颈。

systemd中怎么利用systemd-analyze命令精准找出拖慢服务器开机启动时间的“罪魁祸首”

直接用 systemd-analyze 一套命令组合就能精准定位真正拖慢开机的“罪魁祸首”——它不是看谁自己跑得久,而是看谁卡在关键路径上、让后面一堆服务干等。

先看总耗时在哪被吃掉
运行:

systemd-analyze time

输出类似:
Startup finished in 1.234s (kernel) + 3.456s (initrd) + 12.789s (userspace) = 16.479s

  • 如果 userspace 占比超 80%(比如 12s/16s),说明问题出在服务层,下一步必须进 blamecritical-chain
  • 如果 initrd 高,重点查 /etc/crypttab 是否要输密码、RAID/LVM 扫描是否卡住;
  • 如果 kernel 超 1s,检查 BIOS Fast Boot、NVMe 驱动是否内置、Secure Boot 是否引发额外验证。

再抓最可疑的服务名单
运行:

systemd-analyze blame --no-pager

重点关注:

  • 耗时 ≥ 1000ms(即 ≥1 秒)的 .service,比如:
    5.234s NetworkManager-wait-online.service
    3.890s docker.service
    2.100s snapd.service
  • 别漏掉 .mount 单元,例如 /mnt/backup.mount @4.5s —— 很可能 /etc/fstab 里写了已拔掉的硬盘或不可达 NFS,且没加 nofailx-systemd.timeout=5
  • 注意:blame 只统计服务自身 ExecStart 时间,不反映它被卡了多久。所以高耗时 ≠ 真瓶颈,只是“嫌疑最大”。

最后锁定真实阻塞链路
运行:

systemd-analyze critical-chain

它输出的是从 multi-user.target 向上回溯的最长串行依赖链,每级含:

  • @X.XXXs:该 unit 实际开始启动的时间点
  • +Y.YYYs:它自己花了多久
  • 缩进:下级依赖上级,必须等完才能启动

关键判断法:

  • 找相邻两行之间 @ 时间差最大 的地方(不是 + 最大),比如:
    network-online.target @6.501s  
    └─NetworkManager-wait-online.service @2.199s +4.302s

    这里 @ 差 4.3 秒,说明 network-online.target 等了快 4.3 秒才等到它——这就是瓶颈节点;

    圣时代项目进程管理系统
    圣时代项目进程管理系统

    一个OA雏形,主要是完成项目进程管理的功能。 主要实现: 1。新建项目,设定到期时间,如果超过时间自动转为过期项目。 2。过期项目自动提醒,可自定义设定提醒时间或设定几天一次提醒。 3。自己建立的项目只有自己和超级用户有操作权限。 3。重要的项目可设为重要,有醒目标记,如不想被别人看到的项目可以设为独享,此项目只有自己和管理员可以看到。 4。新项目建立人自动显示为登陆时的用户名,可指定多负责人,如

    下载
  • 常见真凶:
    NetworkManager-wait-online.service(DHCP 超时默认 30 秒)
    systemd-networkd-wait-online.service(无 DHCP 环境易卡死)
    docker.servicekubelet.service(实际被 containerd.service 卡住)

想直击某个服务?指定它查上游:

systemd-analyze critical-chain docker.service

这样跳过无关分支,一眼看到它被谁卡、又卡住了谁。

补充验证手段

  • 查日志确认原因:
    journalctl -u NetworkManager-wait-online.service --since "1 hour ago"
  • 检查是否被跳过(比如条件不满足):
    systemctl list-units --state=inactive | grep -i "wait\|net\|docker"
    journalctl -b | grep "skipping"
  • 临时禁用测试:
    sudo systemctl disable --now NetworkManager-wait-online.service

    重启后对比 systemd-analyze time,看 userspace 是否明显下降。

不复杂但容易忽略。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

335

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

616

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

1171

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

408

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

324

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

190

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

1008

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

1799

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

321

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ubuntu官方总文档
ubuntu官方总文档

共0课时 | 0人学习

swoole进程树解析
swoole进程树解析

共4课时 | 0.3万人学习