直接用 systemd-analyze plot 生成 svg 启动时序图可直观定位包管理器注册服务的性能瓶颈,执行 systemd-analyze plot > boot-packages.svg 后用浏览器打开,结合 blame 和 critical-chain 识别并优化串行阻塞、空等或长延时问题。

直接用 systemd-analyze plot 生成 SVG 启动时序图,是定位包管理器(如 apt、dnf、pacman)安装后自动注册的自启动脚本性能瓶颈最直观的方式。这类脚本常以 .service、.timer 或 .target 形式被写入 /etc/systemd/system/ 或 /usr/lib/systemd/system/,但缺乏优化意识,容易造成串行阻塞、空等或长延时。
快速导出可交互的启动序列图
在终端中执行:
systemd-analyze plot > boot-packages.svg- 确保
systemd-journald正常运行;若报Connection timed out,先运行sudo systemctl restart systemd-journald - 务必重定向输出(
>),否则终端会刷出大量 XML 内容,无法查看 - 用 Chrome、Firefox 或 Edge 双击打开
boot-packages.svg,支持缩放、搜索、悬停查看时间戳
识别包管理引入的典型瓶颈模式
包管理器安装软件时自动启用的服务,常表现出以下 SVG 图中易识别的异常特征:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
-
新装服务条块出现在启动末段且横向拉长:例如
apt-daily-upgrade.timer触发的apt-daily-upgrade.service持续 4.2 秒,且前面有 8 秒空白——说明它被randomizeddelay或OnUnitActiveSec=延迟,又未设Wants=提前预热 -
多个包管理相关服务挤在同一毫秒启动:如
unattended-upgrades.service、apt-daily.service、fwupd-refresh.service几乎同时开始并结束,彼此无依赖却未并行——反映它们共用WantedBy=multi-user.target但缺少Before=/After=显式调度 -
挂载类单元异常延迟出现:比如某 deb/rpm 包注册了
/opt/myapp.mount,但在图中直到启动后期才启动、耗时超 5 秒——大概率因/etc/fstab或单元文件中未加x-systemd.requires-mounts-for=/opt或nofail,导致等待不可达远程路径
结合 blame 和 critical-chain 锁定根因
SVG 图指出“哪个服务可疑”,需交叉验证确认是否由包管理引入及是否真为瓶颈:
- 运行
systemd-analyze blame --no-pager | grep -E "(apt|dnf|pacman|unattended|fwupd)",看是否出现在耗时 Top 5 - 对高耗时项(如
apt-daily.service)运行systemd-analyze critical-chain apt-daily.service,若显示其位于最长链末端,且上游是network-online.target,说明它正卡在网络就绪等待上 - 检查该服务是否由包管理器自动启用:
systemctl is-enabled apt-daily.service;再查来源:rpm -qf /usr/lib/systemd/system/apt-daily.service(RHEL)或dpkg -S /lib/systemd/system/apt-daily.service(Debian)
针对性优化建议
确认瓶颈来自包管理注册的服务后,可按场景调整:
- 对非紧急后台任务(如自动升级),禁用随机延迟:
sudo systemctl edit apt-daily.timer,添加:[Timer]RandomDelaySec=0 - 若只需网络可达而非完全在线,修改服务单元的依赖:
将After=network-online.target改为After=network.target,并加Wants=network.target - 批量禁用非必要包管理服务:
sudo systemctl disable --now apt-daily.timer apt-daily-upgrade.timer unattended-upgrades.service(注意评估安全更新策略) - 检查
/etc/systemd/system/multi-user.target.wants/下软链接,删除由包管理器误加的冗余项










