Linux服务器启动性能分析

193 阅读2分钟

引言

之前都是做的纯软件产品测试,关注的性能指标都是接口响应时间、前端页面刷新时间、服务器CPU内存硬盘网络啥的。 最近在测试某个嵌入式产品,也按照惯例进行了性能测试,各项指标都没啥问题。 最后验收时,发现启动时间严重超时,居然需要好几分钟。 于是觉得查漏补缺,好好研究一下,linux服务器启动性能的测试和分析

探索一、抓取日志分析

对于linux服务器启动性能的测试和分析,下意识地就想到了抓取日志,并写个python脚本进行分析。 看了几篇linux日志相关文章后,大脑一片混沌。 太麻烦了,要自己定制解析日志脚本,想想就头痛。

不过好歹还是研究过,还是把参考文献附上。 blog.csdn.net/weixin_4853… www.cnblogs.com/xingboy/p/1…

探索二、现成工具

自己开发工具费时费力,于是就想找找有没有现成可用的工具。 结果一查,嘿,还真有。

工具systemd-analyze

systemd-analyze是一个Linux平台下分析启动性能的工具,用于分析启动时服务时间消耗。 试用了一下,果然符合需求。 在完成相应测试任务后,我就把使用到的systemd-analyze指令整理了一下。

1. 查看系统启动时间

systemd-analyze

2. 查看各服务启动时间

systemd-analyze blame

3. 查看指定服务的启动流

# 语法
systemd-analyze critical-chain 指定服务名称
# 示例
systemd-analyze critical-chain systemd-networkd-wait-online.service

4. 生成启动详细信息矢量图

systemd-analyze plot > /tmp/start_performance.svg

image.png

5. 查看远程服务器的启动时间信息

在上述指令后加上-H,可用获取远程服务器的启动时间信息。 这个指令还是有使用场景的,比如当我们想获取整个系统的多台服务器的启动性能时,就不用去每一台服务器执行一遍指令,只需要在一台上执行即可。

$ systemd-analyze time -H 用户名@远程服务器IP 
$ systemd-analyze blame -H 用户名@远程服务器IP 
$ systemd-analyze critical-chain -H 用户名@远程服务器IP

注意:

执行过程中,会提示未鉴权的远端主机,是否确定继续连接?

这时候输入yes,并在后续步骤中输入对应用户的密码即可。

The authenticity of host '远端主机IP' can't be established.

ED25519 key fingerprint is SHA256:XXXXXXXXXXXXXXXX.

This key is not known by any other names

Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

Warning: Permanently added '192.168.100.70' (ED25519) to the list of known hosts.