当前位置: 首页 > news >正文

[Linux] Linux系统负载监控 Linux服务管理

目录

Linux系统负载监控

系统负载介绍

查看系统负载

负载解读

top 命令

Linux服务管理

systemd 介绍

系统启动管理进程

基本概念

systemd 架构

unit 类型

查看 unit 列表信息

查看单个 unit 信息

控制系统服务

systemctl 命令

unit 配置文件

例:开发一个 demisse 服务


Linux系统负载监控

系统负载介绍

系统负载平均值:Linux内核以活动请求数指数移动平均值来表示。

  • 活动请求数不仅包含运行中进程,还包含等待IO的进程,对应于R和D。等待IO包括处于睡眠等待预期磁盘和网络响应的任务。

  • 指数移动平均值是一个数学公式,可以平滑趋势数据的高值和低值,更加准确地表示一段时间内系统负载,并确定系统负载是随着时间增加还是减少。

  • 根据所有CPU活动请求数,每5秒计算一次Load Average。通过汇总这些值,可以得到最近1分钟,5分钟和15分钟内的指数移动平均值。

  • 一些UNIX系统仅考虑CPU使用率或运行队列长度。Linux中负载平均值中还包含了对IO的考量,遇到负载平均值很高但CPU活动很低时,检查磁盘和网络活动。

  • Linux将各个物理CPU核心和微处理器超线程计为独立执行单元。每个独立的执行单元拥有独立的请求队列。

查看系统负载

# 查看CPU
[demisse@rocky8 ~]$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                2  # cpu数量为2
On-line CPU(s) list:   0,1
Thread(s) per core:    1
Core(s) per socket:    1
socket:               2
NUMA 节点:         1
厂商 ID:           GenuineIntel
CPU 系列:          6
型号:              94
型号名称:        Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz
步进:              3
CPU MHz:             2304.001
BogoMIPS:            4608.00
......# 查看负载
[demisse@rocky8 ~]$ uptime13:47:10 up  5:01,  2 users,  load average: 0.00, 0.01, 0.05# 给系统加负载
[demisse@rocky8 ~]$ md5sum /dev/zero &
[1] 4912
[demisse@rocky8 ~]$ md5sum /dev/zero &
[2] 4913# 等30秒左右
[demisse@rocky8 ~]$ uptime13:48:57 up  5:03,  2 users,  load average: 1.02, 0.28, 0.13

负载解读

示例:4核心的CPU

  • 负载为: 2.92 4.48 5.20

  • 每个cpu负载为:0.73(2.92/4) 1.12(4.48/4) 1.30(5.20/4)

比较理想的值为 75% 左右。

top 命令

作用:动态查看进程信息,包括不同状态任务数量,CPU消耗和内存消耗。

cpu列解读:

  • us,用户进程消耗CPU的时间

  • sy,系统进程消耗CPU的时间

  • wa,CPU用于等待IO进程的时间

top命令快捷键

常用的命令:数字1,P,M,k,q,h。

Linux服务管理

systemd 介绍

系统启动管理进程
  • CentOS 5 使用 Sys init 引导系统启动,启动速度最慢,采用串行方式启动,无论进程相互之间有无依赖关系。

  • CentOS 6 使用 Upstart init 引导系统启动,启动速度快一点,有依赖的进程之间依次启动而其他与之没有依赖关系的则并行同步启动。

  • CentOS 7 使用 Systemd 引导系统启动,速度最快,所有进程无论有无依赖关系则都是并行启动(很多时候进程没有真正启动而是只有一个信号或者说是标记而已,在真正利用的时候才会真正启动)。Systemd为了解决上文的问题而诞生。它的目标是,为系统的启动和管理提供一套完整的解决方案。

基本概念

服务:从业务角度来称呼,例如 web 服务,数据库服务。

守护进程(daemon):web 服务器对外提供 web 服务,由 web 相关的进程提供支持。

例如:

# 安装软件包
[root@rocky8 ~]# yum install -y httpd# 修改配置
[root@rocky8 ~]# vim /etc/httpd/conf/httpd.conf
# 取消 ServerName 注释
ServerName rocky8.demisse.cloud:80# 启动服务
[root@rocky8 ~]# systemctl start httpd# 查看进程
[root@rocky8 ~]# ps axf|tail 
......
87094 ?        Ss     0:00 /usr/sbin/httpd -DFOREGROUND
87096 ?        S      0:00  \_ /usr/sbin/httpd -DFOREGROUND
87097 ?        Sl     0:00  \_ /usr/sbin/httpd -DFOREGROUND
87098 ?        Sl     0:00  \_ /usr/sbin/httpd -DFOREGROUND
87099 ?        Sl     0:00  \_ /usr/sbin/httpd -DFOREGROUND

httpd 服务对应的守护进程是87094、87096…

systemd 架构

unit 类型

systemctl 命令用于管理不同类型的系统对象,这些对象称之为 units

  • Service unit:用于定义系统服务,文件扩展名为.service,例如httpd.service

  • Socket unit:用于标识进程间通信用的 socket文件,文件扩展名为.socket

  • Target unit:用于模拟实现“运行级别”,文件扩展名为.target

  • Timer unit:用于管理计划任务,文件扩展名为.timer

  • Device unit:用于定义内核识别的设备,文件扩展名为.device

  • Mount unit:用于定义文件系统挂载点,文件扩展名为.mount

  • Snapshot unit:管理系统快照,文件扩展名为.snapshot

  • Swap unit:用于标识swap设备,文件扩展名为.swap

  • Automount unit:文件系统的自动挂载点,文件扩展名为.automount

  • Path unit:用于根据文件系统上特定对象的变化来启动其他服务,文件扩展名为.path

  • Slice unit:用于资源管理,文件扩展名为.slice

查看 unit 列表信息
# 列出状态为loaded units
[root@workstation ~]# systemctl list-units

systemctl list-units命令输出说明:

  • UNIT:服务单元名称。

  • LOAD:systemd是否正确解析了单元的配置并将该单元加载到内存中。

  • ACTIVE:单元的高级别激活状态。此信息表明单元是否已成功启动。

  • SUB:单元的低级别激活状态。此信息指示有关该单元的更多详细信息。信息视单元类型、 状态以及单元的执行方式而异。

  • DESCRIPTION:单元的简短描述。

# -t选项查看特定类型unit 清单
[demisse@rocky8 ~]$ systemctl list-units -t timer 
UNIT                         LOAD   ACTIVE SUB     DESCRIPTION
systemd-tmpfiles-clean.timer loaded active waiting Daily Cleanup of Temporary Directories
unbound-anchor.timer         loaded active waiting daily update of the root trust anchor for DNSSECLOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.2 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.# 列出类型为service,状态为active和inactive unit
[root@rocky8 ~]# systemctl list-units --type service --all# 列出所有unit,包括未loaded的unit
[root@rocky8 ~]# systemctl list-unit-files# 查看失败的服务
[root@rocky8 ~]# systemctl --failed --type service
查看单个 unit 信息
[demisse@rocky8 ~]$ systemctl status sshd.service
● sshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled; vendor preset: enabled)Active: active (running) since 三 2022-11-09 08:45:45 CST; 5h 50min agoDocs: man:sshd(8)man:sshd_config(5)Main PID: 1167 (sshd)Tasks: 1CGroup: /system.slice/sshd.service└─1167 /usr/sbin/sshd -D 

控制系统服务

systemctl 命令

# 停止服务
[root@rocky8 ~]# systemctl stop sshd.service
# 客户端连接测试 # 启动服务
[root@rocky8 ~]# systemctl start sshd.service
# 客户端连接测试 # 重启服务,相当于stop再start
[root@rocky8 ~]# systemctl restart sshd.service
# 重新加载服务,服务对应的主进程不会重启,只会重新加载一次配置文件。# 一般用于配置文件变动后,重新加载
[root@rocky8 ~]# systemctl reload sshd.service# 禁止服务开机自启
[root@rocky8 ~]# systemctl disable sshd.service
[root@rocky8 ~]# systemctl is-enabled sshd
disabled# 设置服务开机自启
[root@rocky8 ~]# systemctl enable sshd.service
[root@rocky8 ~]# systemctl is-enabled sshd
enabled# 禁用服务,服务被禁用后,将无法start,因为服务的配置文件指向/dev/null
[root@rocky8 ~]# systemctl mask sshd.service
# 取消禁用
[root@rocky8 ~]# systemctl unmask sshd.service# 查看依赖关系,sshd服务要启动,被依赖的单元必须先启动完成。
[root@rocky8 ~]# systemctl list-dependencies sshd
sshd.service
● ├─sshd-keygen.service
● ├─system.slice
● └─basic.target
●        ├─microcode.service
●        ├─rhel-dmesg.service
●        ├─selinux-policy-migrate-local-changes@targeted.service
●        ├─paths.target
●        ├─slices.target
●        │ ├─-.slice
●        │ └─system.slice
●        ├─sockets.target
●        │ ├─avahi-daemon.socket
......# 查看反向依赖关系,sshd服务启动后才能启动后续单元。
[root@rocky8 ~]# systemctl list-dependencies sshd --reverse 
sshd.service
● └─multi-user.target
●        └─graphical.target
unit 配置文件
  • /etc/systemd/system/ sshd.service,优先生效。一般是管理员自定义的配置。

  • /usr/lib/systemd/system/ sshd.service,其次生效。软件包自带的默认配置。

例:开发一个 demisse 服务
[root@rocky8 ~]# cp /bin/md5sum /bin/demisse
[root@rocky8 ~]# cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/demisse.service
[root@rocky8 ~]# vim /etc/systemd/system/demisse.service
[Unit]
Description=demisse server daemon[Service]
Type=fork
ExecStart=/usr/bin/demisse /dev/zero[Install]
WantedBy=multi-user.target[root@rocky8 ~]# systemctl daemon-reload 
[root@rocky8 ~]# systemctl enable demisse --now
[root@rocky8 ~]# systemctl status demisse
http://www.dtcms.com/a/335079.html

相关文章:

  • Java Stream sort算子实现:SortedOps
  • 网络层(1)
  • DeepResearch开源与闭源方案对比
  • autofit.js: 自动调整HTML元素大小的JavaScript库
  • 小智-ESP32的MQTT协议
  • linux设备驱动之字符设备驱动
  • Python-Pandas基础
  • 主从复制+哨兵
  • 移动互联网发展战略
  • Altium Designer 22使用笔记(7)---网表导入,叠层设置
  • Spring框架(IOC)
  • 程序设计|C语言教学——C语言基础4:进阶
  • TOGAF八步一法笔记2
  • day42_2025-08-16
  • TDengine 3.3.7.0 版新功能(BLOB 数据类型)
  • ZYNQ QSPI控制器说明
  • JIT 编译与解释执行机制:Java 性能加速的幕后引擎
  • Linux软件编程-线程(2)
  • Python训练营打卡 DAY 38 Dataset和Dataloader类
  • 《代码重生:杨蓉与62.webp》
  • PowerShell中搜索文件夹
  • 国内代理IP在SEO行业中的应用
  • 云安全 - The Big IAM Challenge
  • 低代码平台能力框架:可复用组件与复杂业务的实现机制
  • 现金流预测模型:12个月精准计算指南
  • 嵌入式硬件篇---电感本质
  • Tomcat架构深度解析:从Server到Servlet的全流程揭秘
  • 【数据分享】上市公司供应链成本分摊数据(2007-2024)
  • 使用Python的defaultdict处理字典中的缺失键
  • C++设计模式:面向对象设计原则