Linux怎么查看系统启动耗时_Linux如何分析开机启动性能【技巧】

千静酱_7862

千静酱_7862

2026-03-22

932人浏览

原创

systemd-analyze 是 systemd 启动分析第一工具,直接读取时间戳给出总耗时(如 kernel 2.1s + userspace 18.3s),定位瓶颈在用户空间;配合 blame、critical-chain、plot 和 journalctl 可精准识别等待依赖、配置错误等深层原因。

linux怎么查看系统启动耗时_linux如何分析开机启动性能【技巧】

systemd-analyze 能直接告诉你总耗时和瓶颈在哪

Linux 用 systemd 启动后,systemd-analyze 就是第一把尺子——它不猜、不推断,直接读取启动日志里的时间戳。运行一次,你就知道“内核花了多久”“用户空间拖了多久”,比如输出 kernel 2.1s + userspace 18.3s,那问题基本就在用户空间那一堆服务里。

  • systemd-analyze:只看总耗时,定位大方向
  • systemd-analyze blame:列出每个已启动单元的耗时,从高到低排,重点关注 >500ms 的项(如 NetworkManager-wait-online.service 或你自定义的 myapp-init.service)
  • systemd-analyze critical-chain:不是看单个服务多慢,而是看哪条依赖链最长——比如 multi-user.target → docker.service → network-online.target → NetworkManager-wait-online.service,真正卡点往往在链尾那个“等网络就绪”的环节

别只盯着“慢服务”,先查清楚它为什么慢

很多服务本身启动很快,但被卡在等待上。比如 NetworkManager-wait-online.service 默认会等 DHCP 获取 IP 成功或超时(常为 30 秒),而你的机器可能压根没连网,或者只是插了网线但没配 DHCP 服务器——它就干等满格。

  • 用 journalctl -u NetworkManager-wait-online.service -b 看日志,找 Timed out waiting for connectivity 这类提示
  • 检查主机名解析是否失败:hostname 输出 mydesk,但 /etc/hosts 里没有 127.0.0.1 mydesk?SSH、Postfix 等服务就会 DNS 超时卡住几秒到十几秒
  • /etc/fstab 里有没有带 _netdev 却没加 nofail 的 NFS 条目?一个挂载失败,整个启动可能就挂住

禁用服务前,先确认它真没被调用过

看到 bluetooth.service 耗时 2.4s,别急着 systemctl disable。有些服务虽不手动启,却被其他单元隐式拉起(比如某个蓝牙音频 profile 依赖它),盲目禁用可能导致后续功能异常。

  • 先查状态:systemctl status bluetooth.service 看 Loaded 行是否含 disabled,再看 Active 是不是 inactive (dead)
  • 再查历史调用:journalctl -u bluetooth.service --since "7 days ago" | grep -i "started\|activating",如果 7 天内完全没记录,才大概率可安全禁用
  • 禁用后仍被拉起?说明有其他服务 Wants= 或 Requires= 它,这时该用 systemctl mask bluetooth.service(解除用 unmask)

画图比看数字更直观:用 plot 生成启动时间线

systemd-analyze plot > boot.svg 生成的 SVG 图,能一眼看出哪些服务并行、哪些被阻塞、哪些在空等——比如一条横跨 15 秒的空白长条,后面紧跟着 docker.service,那基本就是它前面某个 After=xxx 单元在傻等,而不是 Docker 自身慢。

  • 打开 boot.svg(用浏览器就行),鼠标悬停看每个矩形块的精确起止时间
  • 重点找“长条+空白”组合:空白代表等待,长条是实际工作,两者之间就是真正的卡点
  • 注意颜色区分:灰色是未启用单元,蓝色是并行启动,红色是串行依赖——别被并行块的长度误导,关键路径永远是红色那条最顶上的链

真正难的不是找到哪个服务慢,而是判断它慢是因为自身逻辑重,还是上游没给信号、下游没释放资源、或者配置里写了错的 After= 却漏了 Wants=。这些细节,plot 和 critical-chain 一起看才看得清。

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.18

5127

5

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2023.08.10

2268

6

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

2023.07.24

685

4

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

4919

6

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

5857

6

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.08

2213

7

Docker容器化部署与DevOps实践
Docker容器化部署与DevOps实践

本专题面向后端与运维开发者,系统讲解 Docker 容器化技术在实际项目中的应用。内容涵盖 Docker 镜像构建、容器运行机制、Docker Compose 多服务编排,以及在 DevOps 流程中的持续集成与持续部署实践。通过真实场景演示,帮助开发者实现应用的快速部署、环境一致性与运维自动化。

2026.02.11

239

16

Docker 容器部署
Docker 容器部署

本专题整合了Docker容器部署相关内容,阅读专题下面的文章了解更多详细操作教程。

2026.03.31

431

14

Java容器化部署与Docker实践教程合集
Java容器化部署与Docker实践教程合集

聚焦 Java 应用的容器化与云原生部署,讲解 Dockerfile 编写规范与 Java 应用镜像构建、多阶段构建(Multi-stage Build)减小镜像体积、Jib / Buildpacks 免 Dockerfile 镜像构建方案、JVM 容器感知参数(-XX:MaxRAMPercentage)配置、Docker Compose 编排多服务(应用 + MySQL + Redis)、容器健康检查与资源限制、Kubernetes

2026.05.11

380

26

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习