[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
英文地址,請注明出處:http://en.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…