如何分析启动耗时 systemd-analyze诊断工具
发布时间 - 2025-08-12 00:00:00 点击率:次首先运行systemd-analyze查看总启动时间,判断问题是出在内核阶段还是用户空间阶段;2. 使用systemd-analyze blame列出各服务启动耗时,找出耗时过长的服务;3. 通过systemd-analyze critical-chain分析关键路径,识别串行瓶颈服务;4. 必要时使用systemd-analyze plot生成svg图表可视化启动过程;5. 根据分析结果禁用非必要服务、调整服务启动顺序或优化配置以提升启动速度。
在 Linux 系统中,系统启动速度是衡量系统性能的重要指标之一。当发现开机变慢时,可以使用
systemd-analyze工具来诊断启动耗时,找出拖慢启动过程的关键环节。这个工具是 systemd 提供的内置分析功能,能帮助我们快速了解系统从开机到进入用户空间的整个时间分布。
一、查看整体启动时间:systemd-analyze
最简单的用法是直接运行:
systemd-analyze
输出示例:
Startup finished in 5.234s (kernel) + 8.765s (userspace) = 13.999s
这行信息告诉我们:
- 内核启动耗时 5.234 秒(从 BIOS 交出控制权到 initramfs 完成)
- 用户空间启动耗 8.765 秒(从 systemd 启动到默认目标(如 multi-user.target 或 graphical.target)就绪)
- 总共耗时约 14 秒
这是第一步,判断问题出在内核阶段还是用户空间阶段。
二、分析服务启动耗时:systemd-analyze blame
如果用户空间耗时较长,可以进一步查看哪些服务拖慢了启动:
systemd-analyze blame
输出示例:
3.212s nginx.service 2.876s docker.service 1.543s app-server.service 800ms NetworkManager-wait-online.service ...
这个列表按耗时从高到低排序,清楚显示每个服务的启动时间。重点关注
耗时超过 1 秒的服务。
常见“拖后腿”的服务包括:
NetworkManager-wait-online.service
:等待网络连通,容易卡住启动(尤其在无网络或网络慢的环境)- 某些自定义应用服务或数据库服务(如 MySQL、Redis)
- Docker 及其依赖服务(启动容器多时会很慢)
优化建议:
- 对非关键服务使用
Type=oneshot
或延迟启动(通过Wants=
+After=
控制顺序) - 禁用不必要的服务:
sudo systemctl disable 服务名
- 对
NetworkManager-wait-online
,若不需要等待网络,可禁用它:sudo systemctl disable NetworkManager-wait-online.service
三、查看服务依赖与并行情况:systemd-analyze critical-chain
这个命令展示从系统启动到默认目标(target)完成的关键路径:
systemd-analyze critical-chain
输出示例:
graphical.target @10.234s
└─multi-user.target @10.233s
└─app-server.service @8.690s +1.543s
└─network-online.target @8.689s
└─NetworkManager-wait-online.service @7.889s +800ms
└─NetworkManager.service @2.123s +5.765s
└─network-pre.target @2.122s
└─firewalld.service @1.800s +322ms
└─basic.target @1.799s
└─sockets.target @1.798s
└─docker.socket @1.797s
└─sysinit.target @1.796s
└─systemd-timesyncd.service @1.700s +95ms
└─local-fs.target @1.699s
└─tmp.mount @1.690s +9ms
└─local-fs-pre.target @1.689s
└─...关键点:
- 每行显示服务名称、启动时间(@)和持续时间(+)
- 关键路径上的服务是“串行瓶颈”,优化这些服务能显著缩短总启动时间
- 如果某个服务耗时长且位于关键链上,优先优化它
四、可视化启动过程(可选):生成 SVG 图
systemd-analyze还支持生成启动过程的可视化图表:
systemd-analyze plot > boot-time.svg
然后用浏览器打开
boot-time.svg,可以看到所有服务的启动时间线,直观展示并行与串行关系。
适用场景:
- 多服务启动顺序复杂,需要整体把握
- 向团队汇报启动性能问题
- 调试服务依赖冲突
小结:诊断流程建议
- 先运行
systemd-analyze
看总时间,判断是内核还是用户空间问题 - 用
blame
找出耗时最长的服务 - 用
critical-chain
查看关键路径,识别串行瓶颈 - 针对性优化:禁用、延迟、并行化或调整服务配置
- 必要时用
plot
生成图形辅助分析
基本上就这些。不复杂,但能快速定位大多数启动慢的问题。
# mysql
# linux
# redis
# docker
# nginx
# 浏览器
# 工具
# ai
# 优化配置
# red
# asic
# 数据库
# 出在
# 系统启动
# 这是
# 拖后腿
# 可以看到
# 问题是
# 自定义
# 告诉我们
# 可以使用
# 可选
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】
C++时间戳转换成日期时间的步骤和示例代码
英语简历制作免费网站推荐,如何将简历翻译成英文?
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作
如何为不同团队 ID 动态生成多个“认领值班”按钮
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理
如何在腾讯云免费申请建站?
手机软键盘弹出时影响布局的解决方法
EditPlus 正则表达式 实战(3)
LinuxCD持续部署教程_自动发布与回滚机制
Laravel如何创建自定义Artisan命令?(代码示例)
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
网站制作企业,网站的banner和导航栏是指什么?
如何快速生成凡客建站的专业级图册?
如何快速上传建站程序避免常见错误?
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】
Android利用动画实现背景逐渐变暗
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
非常酷的网站设计制作软件,酷培ai教育官方网站?
phpredis提高消息队列的实时性方法(推荐)
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
JavaScript如何实现音频处理_Web Audio API如何工作?
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
bootstrap日历插件datetimepicker使用方法
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
javascript读取文本节点方法小结
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
C++用Dijkstra(迪杰斯特拉)算法求最短路径
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Android Socket接口实现即时通讯实例代码
详解jQuery中的事件
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
制作企业网站建设方案,怎样建设一个公司网站?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
如何快速生成高效建站系统源代码?
Linux网络带宽限制_tc配置实践解析【教程】
HTML 中如何正确使用模板变量为元素的 name 属性赋值
Android 常见的图片加载框架详细介绍
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧

