[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.pswp.cn/diannao/95813.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95813.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vector 手动实现 及遇到的各种细节问题

之前对vector的一些功能使用了一下 接下来手动实现一下vector vector的实现和string还是有不小区别的 有很多地方都有细节的问题不同于string的成员变量一个指针一个size一个capacity的成员变量 vector里面存的是三个迭代器iterator 这的迭代器其实就是模版T的指针 这样就…

OpenStack Neutron中的L2 Agent与L3 Agent:新手友好指南

引言:云网络的幕后英雄 在当今的云计算世界中,OpenStack作为开源云平台的佼佼者,为成千上万的企业提供了灵活、可扩展的基础设施服务。而在OpenStack的众多组件中,Neutron(网络服务)扮演着至关重要的角色—…

【自用】JavaSE--特殊文件Properties与XML、日志技术

特殊文件概述使用特殊文件可以存储多个有关系的数据,作为系统的配置信息属性文件类似于键值对,一一对应存储数据(比如用户名与密码)XML文件存储多个用户的多个属性更适合,适合存储更复杂的数据Properties注:这个属性文件的后缀即使…

中本聪思想与Web3的困境:从理论到现实的跨越

一、中本聪思想的核心精髓中本聪通过比特币白皮书提出的核心思想,可归纳为三大支柱:去中心化货币体系目标:摆脱中央机构控制,避免通货膨胀和政治干预(如2008年金融危机暴露的中心化风险)。实现路径&#xf…

Centos 用户管理

一.创建用户 在 root账户 或 sudo 权限下 1. 创建用户 useradd xiaoyangzi2.为该用户设置密码或修改密码 passwd xiaoyangzi3. 将用户加入wheel用户组 在 CentOS 中,属于 wheel 组的用户默认可以使用 sudo 权限。 查看所属用户组: groups xiaoyangzi将 xiaoyangzi 加…

C++枚举算法习题

1. 3的倍数枚举(基础)题目:在之间有10和50多少个数是3的倍数?列举这些数。 解析:枚举10到50之间的数,判断是否能被3整除。优化:计算第一个≥10的3的倍数(1234)&#xff0…

【SpringBoot系列-01】Spring Boot 启动原理深度解析

【SpringBoot系列-01】Spring Boot 启动原理深度解析 大家好!今天咱们来好好聊聊Spring Boot的启动原理。估计不少人跟我一样,刚开始用Spring Boot的时候觉得这玩意儿真神奇,一个main方法跑起来就啥都有了。但时间长了总会好奇:这…

windows环境下使用vscode以及相关插件搭建c/c++的编译,调试环境

windows下使用vscode搭建c/c的编译、运行、调试环境,需要注意的是生成的是xxx.exe可执行文件。另外使用的编译器是mingw,也就是windows环境下的GNU。 我参考的网址是:https://zhuanlan.zhihu.com/p/1936443912806962622 文章分为2种环境搭建…

标准瓦片层级0~20,在EPSG:4326坐标系下,每个像素点代表的度数

在 EPSG:4326(WGS84经纬度坐标系) 下,瓦片层级(Zoom Level)的分辨率以 度/像素 为单位,其计算遵循 TMS Global Geodetic 规范(单位:度)。以下是 标准层级 0 至 20 的分辨…

Unity高级剔除技术全解析

目录 ​编辑层级剔除(Layer Culling)原理详解 代码示例 业务应用场景 距离剔除(Distance Culling)技术细节 进阶实现 开放世界优化技巧 视口裁剪(Viewport Culling)多摄像机协作方案 高级应用场景 …

[Linux] Linux文件系统基本管理

目录 识别文件系统和设备 Linux 中设备 Linux 文件系统 查看设备和文件系统 lsblk命令 df命令 du命令 案例:查看根文件系统中哪个文件占用了最大空间 环境准备 查找过程 挂载和卸载文件系统 环境准备 挂载文件系统 卸载文件系统 卸载失败处理 lsof …

如何在 Ubuntu 24.04 Server 或 Desktop 上安装 XFCE

在 Ubuntu 24.04 上更改当前桌面环境或添加新的桌面环境并不是一项艰巨的任务。大多数流行的 Linux 桌面环境,包括 XFCE,都可以通过默认的 Ubuntu 24.04 LTS 系统仓库安装。在本教程中,我们将学习如何使用 Tasksel 工具在 Ubuntu Linux 上安装和配置 XFCE。 访问终端并运行…

linux下用c++11写一个UDP回显程序

需求&#xff1a;1&#xff09;从2个UDP端口接收数据&#xff0c;并在同样的端口回显。echo2&#xff09;多个处理线程&#xff0c;多个发送线程&#xff1b;3&#xff09;使用条件变量唤醒&#xff1b;#include <stack> #include <mutex> #include <atomic>…

MySQL 深分页优化与条件分页:把 OFFSET 换成“游标”,再用覆盖索引抄近路

MySQL 深分页优化与条件分页:把 OFFSET 换成“游标”,再用覆盖索引抄近路 这不是“玄学调优”,而是可复制的方案。本文用可复现的 DDL/造数脚本,演示为什么 OFFSET 越大越慢,如何用 条件游标(Keyset Pagination) 替换它,并配上 覆盖索引。还会教你看 EXPLAIN/EXPLAIN A…

Unity 绳子插件 ObjRope 使用简记

Unity 绳子插件&#xff0c;是一个基于物理的、高度逼真且可交互的绳索模拟解决方案。 其性能良好&#xff0c;能够运行在小游戏平台。 一、插件基本 插件资源商店地址&#xff1a; Obi Rope | Physics | Unity Asset Store 官方文档&#xff08;手册&#xff09;&#xff…

demo 通讯录 + 城市选择器 (字母索引左右联动 ListItemGroup+AlphabetIndexer)笔记

一、城市选择器实现笔记1. 双层 for 循环渲染数据结构interface BKCityContent {initial: string; // 字母索引cityNameList: string[]; // 城市列表 }核心实现// 外层循环&#xff1a;字母分组 - 遍历城市数据&#xff0c;按字母分组显示 ForEach(this.cityContentList, (item…

【总结型】c语言中的位运算

位运算包括 & | ^ ~ << >>按位与 将某些变量中的某些位清0同时保持其他位不变。也可以用来获取变量中的某一位。 例如&#xff1a;将int型变量n低8位全置为0&#xff0c;其余位保持不变。 n n & 0xffffff00 如何判断一个int型变量n的第七位。 n & 0x8…

如何在FastAPI中玩转APScheduler,实现动态定时任务的魔法?

url: /posts/4fb9e30bb20956319c783e21897a667a/ title: 如何在FastAPI中玩转APScheduler,实现动态定时任务的魔法? date: 2025-08-16T01:14:26+08:00 lastmod: 2025-08-16T01:14:26+08:00 author: cmdragon summary: APScheduler是Python中强大的任务调度库,支持任务持久化…

GitHub的简单使用方法----(5)

最后一篇简单讲讲git管理远程仓库 1.目的 备份&#xff0c;实现代码共享集中化管理 &#xff08;将本地仓库同步到git远程仓库中&#xff09; git clone 仓库地址 以下图为示例&#xff0c;我打开了一个别人的项目仓库&#xff0c;点击code能看到仓库地址 等待完成即可 如…

C++ STL-string类底层实现

摘要&#xff1a; 本文实现了一个简易的string类&#xff0c;主要包含以下功能&#xff1a; 1. 默认成员函数&#xff1a;构造函数&#xff08;默认/参数化&#xff09;、拷贝构造、赋值重载和析构函数&#xff0c;采用深拷贝避免内存问题&#xff1b; 2. 迭代器支持&#xff1…