• systemd-analyze – 在Linux中查找系统启动性能统计信息


    您是否在使用 systemd 系统和服务管理器,并且您的 Linux 系统需要较长时间才能启动,或者您希望查看系统启动性能的报告? 如果是的话,你已经登陆了正确的地方。

    在本文中,我们将向您展示如何使用systemd-analyze来分析 Linux 系统启动性能统计信息, systemd是 systemd 中用于系统管理的众多实用程序之一。

    另请参阅 : 如何在远程 Linux 服务器上控制系统服务

    要获得系统启动时间的概述,我们可以运行systemd-analyze命令而不带任何参数,如下所示。 它将列出每个服务启动需要多长时间的信息,其中包括启动时内核,initrd 和用户空间占用的时间。

    1. # systemd-analyze
    2. Startup finished in 884ms (kernel) + 3.861s (initrd) + 48.356s (userspace) = 53.102s

    如果要查看所有正在运行的单位的列表,按其初始化时间排序(最高时间位于最前面),blame 子命令用于此目的。 运行后面的命令后,使用[Enter]查看列表中的更多服务,然后q退出。

    1. # systemd-analyze blame
    找出每个单位的时间开始
    1. 16.159s mariadb.service
    2. 12.178s libvirtd.service
    3. 10.298s tuned.service
    4. 9.836s postfix.service
    5. 8.704s lsws.service
    6. 7.352s lscpd.service
    7. 4.988s [email protected]
    8. 4.779s NetworkManager-wait-online.service
    9. 4.577s lvm2-monitor.service
    10. 4.439s ModemManager.service
    11. 4.413s polkit.service
    12. 4.280s dev-sda1.device
    13. 4.225s systemd-udev-settle.service
    14. 3.957s firewalld.service
    15. 3.227s rhel-dmesg.service
    16. 3.221s abrt-ccpp.service
    17. 3.142s rsyslog.service
    18. 3.053s avahi-daemon.service
    19. 3.042s pure-ftpd.service
    20. 2.249s gssproxy.service
    21. 2.212s NetworkManager.service
    22. 1.889s proc-fs-nfsd.mount
    23. 1.780s systemd-tmpfiles-setup-dev.service
    24. 1.451s sshd.service
    25. 1.267s rhel-readonly.service
    26. 1.035s sysstat.service
    27. 1.001s rpc-statd-notify.service
    28. 910ms systemd-logind.service
    29. 739ms kdump.service
    30. 738ms network.service
    31. ...

    从上面的输出中可以看出,每台设备都是基于所花费的时间进行排序的,您可以简单地找出哪些服务在启动和分析问题时花费的时间较长。

    接下来,我们还可以使用 critical-chain 子命令查看默认目标或指定单元列表的时间关键链的树,如图所示。

    1. # systemd-analyze critical-chain
    为默认目标打印时间关键链
    1. The time after the unit is active or started is printed after the "@" character.
    2. The time the unit takes to start is printed after the "+" character.
    3. multi-user.target @48.342s
    4. └─mariadb.service @31.560s +16.159s
    5. └─network.target @31.558s
    6. └─network.service @30.819s +738ms
    7. └─NetworkManager-wait-online.service @26.035s +4.779s
    8. └─NetworkManager.service @23.821s +2.212s
    9. └─network-pre.target @23.821s
    10. └─firewalld.service @19.863s +3.957s
    11. └─polkit.service @15.381s +4.413s
    12. └─basic.target @12.271s
    13. └─sockets.target @12.271s
    14. └─virtlockd.socket @12.270s
    15. └─sysinit.target @12.251s
    16. └─systemd-update-utmp.service @12.196s +54ms
    17. └─auditd.service @11.705s +486ms
    18. └─systemd-tmpfiles-setup.service @11.609s +93ms
    19. └─rhel-import-state.service @11.397s +211ms
    20. └─local-fs.target @11.363s
    21. └─run-user-0.mount @46.910s
    22. └─local-fs-pre.target @10.575s
    23. └─lvm2-monitor.service @5.996s +4.577s
    24. └─lvm2-lvmetad.service @7.376s
    25. └─lvm2-lvmetad.socket @5.987s
    26. └─-.slice
    1. # systemd-analyze critical-chain ntp.service networking.service

    最后,让我们看看一个更重要的子命令,它允许生成图形(svg 格式)详细的已启动的系统服务,以及在什么时候突出显示它们的初始化时间,如下所示。

    确保图形显示模式或 x-windows 已启用以查看绘图。

    1. # systemd-analyze plot > boot_analysis.svg
    2. # xviewer boot_analysis.svg
    Linux 启动分析

    Linux 启动分析

    以上所有命令都将打印本地机器的启动性能统计信息。 要通过ssh从远程主机查看信息,请使用-H标志并指定[email protected]指令,如图所示。

    1. # systemd-analyze time -H [email protected]
    2. # systemd-analyze blame -H [email protected]
    3. # systemd-analyze critical-chain -H [email protected]

    systemd-analysis也可用于从系统和 systemd(服务管理器)等中查找其他状态和跟踪信息。 有关更多信息,请参阅其手册页。

    1. # man systemd-analyze

    另请参阅 : 如何在 SystemD 中更改运行级别(目标)

  • 相关阅读:
    @responseBody注解的使用
    springmvc下的省市县三级联动
    select 动态添加option函数
    清空select标签中option选项的4种不同方式
    javascript删除option选项的多种方法总结
    js如何获取select下拉框的value以及文本内容
    如何设置select下拉禁止选择
    java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符
    转:通过他人完成任务的艺术
    ***周鸿祎谈创业:很多程序员高智商 但我一看就知道他们不会成功
  • 原文地址:https://www.cnblogs.com/DataArt/p/10173847.html
Copyright © 2020-2023  润新知