目錄
?一、Stress系統壓力測試工具
二、性能查看
(一)查看CPU
# nproc
# lscpu? ? ? ?
# top? ? ? ? ? ?
# uptime? ? ?
# mpstat 數字1 數字2? ? ?
(二)查看內存
#?dmidecode -t memory | less? ?
# free -h? ? ? ?
# vmstat? 數字1 數字2? ?
(三)查看進程
# ps? ? ?
# top? ? ? ? ?
(四)查看硬盤
# df -hT? ? ? ?
# df -i? ? ? ? ?
# iostat 數字1 數字2???? ?
(五)查看網卡
# ethtool ens33? ? ? ?
# ifstat
# sar -n DEV 數字1 數字2? ? ?
# iftop -i 接口
三、Linux系統運行模式
?#?dmidecode memory | less? ?
?????????編輯
?一、Stress系統壓力測試工具
- # stress -c 數字? ? ? ??//執行sqrt()計算來模擬CPU密集型任務。測試CPU負載能力。
- # stress?-i 數字? ? ? ? //sync()系統調用模擬IO同步操作。測試系統IO調度能力。
- # stress?-m 數字? ? ? //頻繁的內存分配和釋放操作模擬內存壓力。測試內存。
- # stress?-d?數字? ? ? ?//持續的文件寫入和刪除操作。測試磁盤IO性能。
二、性能查看
(一)查看CPU
-
# nproc
- //查看CPU數量
-
# lscpu? ? ? ?
-
//查看cpu基本架構信息
????????
-
# top? ? ? ? ? ?
-
//查看系統整體資源使用情況,負載。
????????
q | 退出top指令 |
h | 列出可用的快捷鍵 |
Shift + M | 按內存使用率排序 |
Shift + P | 按 CPU 使用率排序(默認) |
Shift + N | 按 PID 排序 |
Shift + T | 按運行時間排序 |
k | 終止指定進程(輸入 PID 后確認) |
z | 切換彩色/黑白顯示模式。 |
top - 16:08:19 | 當前系統時間 | load average: 0.01, 0.02, 0.05? | 分別表示過去1分鐘、5分鐘、15分鐘的系統平均負載。數值越高表示系統越繁忙(通常以CPU核心數為參考,如4核CPU的負載超過4可能表示高負載) | |
up ?5:58? ? | 系統已連續運行時間 | |||
2 users? ? | 當前登錄的用戶數 | Tasks: | 任務數量 | |
%Cpu(s): ?0.0 us | 用戶進程占用CPU百分比 | KiB Mem : ?1863000 total | 物理內存總量(單位KB) | |
0.2 sy | 系統進程占用CPU百分比 | 1231848 free | 空閑內存 | |
0.0 ni | 低優先級進程占用CPU百分比 | 255592 used | 已使用內存 | |
99.8 id | CPU空閑百分比 | 375560 buff/cache | 緩存/緩沖區占用的內存。讀:緩存;寫:緩沖 | |
0.0 wa | 等待I/O操作的CPU時間百分比 | KiB Swap: ?1048572 total | 交換分區總量。 | |
0.0 hi | 硬件中斷占用CPU百分比 | 1048572 free | 空閑交換分區。 | |
0.0 si | 軟件中斷占用CPU百分比 | 0 used | 已使用交換分區 | |
0.0 st | 被虛擬機偷走的CPU時間百分比 | 1448536 avail Mem? | 可用內存 |
PID | USER | PR | NI | VIRT | RES | SHR | S | %CPU | %MEM | TIME+ | COMMAND |
進程的唯一標識符(ID)? | 進程所屬用戶 | 進程優先級 | 進程的Nice值 | 進程占用的虛擬內存總量 | 進程占用的物理內存 | 進程共享內存大小 | 進程狀態 | 進程占用CPU百分比 | 進程占用物理內存百分比 | 進程累計使用的CPU時間 | 進程對應的命令或程序名 |
-
# uptime? ? ?
- //查看CPU負載
????????
-
# mpstat 數字1 數字2? ? ?
- //查看CPU使用率。1時間間隔,2次數
????????
(二)查看內存
-
#?dmidecode -t memory | less? ?
- //查看內存型號、主頻
????????
-
# free -h? ? ? ?
-
//查看內存
-
# vmstat? 數字1 數字2? ?
- //查看內存使用率。1時間間隔,2次數
????????OOM(物理內存和交換空間均被耗盡)時,OOM Killer 終止進程以釋放內存。
(三)查看進程
-
# ps? ? ?
-
//簡單查看進程
????????
- ?# ps aux? ? ? ? ? ?//查看所有進程的資源占用情況
????????
- # ps -elf? ? ? ? ? ? ?//查看進程間父子關系或優先級
????????
- # pstree? ? ? ? ? ??//以樹狀結構展示進程間的層級關系,直觀顯示父進程與子進程的派生關系。
????????
- # pidof 命令? ?//查看命令執行進程的pid
????????
- PID(進程 ID)? ? ?//?Process ID?的縮寫,表示進程的唯一標識符。
- TTY(終端設備)? ?? //Teletype?的縮寫,表示進程關聯的終端設備。
pts/* | 偽終端 | tty* | 物理終端或虛擬控制臺 | ? | 無終端關聯,如守護進程 |
- TIME(CPU 時間)? ? ?//表示進程占用的?CPU 時間,格式通常為分鐘:秒:百分秒
- CMD(進程名稱)? ? ? //?Command?的縮寫,顯示進程的啟動命//令或可執行文件名稱
- USER? ? //進程啟動的用戶
- F? ? ? ?? ? //進程的狀態標志
- STAT?? ?//進程的當前狀態。也叫 S 。
- PPID (Parent Process ID)? ? ? ? ?//父進程的 PID。
- %CPU、%MEM? ? ? ??//進程所消耗的CPU(也叫C)、內存
- VSZ? ? ? ? ?//虛擬內存集,表示進程占用的虛擬內存總量,包括共享庫和未使用的內存頁
????????物理內存:物理內存是計算機實際安裝的硬件內存,用于存儲正在運行的程序和數據。它是虛擬內存系統的基礎,所有數據最終需要加載到物理內存中才能被CPU處理。
????????共享內存:共享內存允許多個進程訪問同一塊內存區域,用于進程間通信。
????????交換空間(Swap):交換空間是硬盤上預留的區域,用于存儲暫時不使用的內存頁面。當物理內存不足時,系統會將部分不活躍的內存數據臨時轉移到Swap空間,以釋放內存供其他進程使用。
-
RSS? ? ? ?//物理內存集,表示進程實際物理內存,不包括未被訪問或已換出到交換空間的內存
-
START? ?//進程啟動時間
-
COMMAND? ? ? ? //進程名稱? ?帶[] -->內核進程/系統進程 ;?沒帶[]-->用戶進程
-
PRI? ? ? ?//進程優先級(Priority),數值范圍通常為0-139(Linux系統),數值越低優先級越高。實時進程優先級范圍為0-99,普通進程為100-139。用戶可通過
nice
或renice
命令調整普通進程的優先級。 -
NI? ? ? ??//Nice值(Nice Value),影響進程的動態優先級調整范圍。取值范圍為-20到19,默認值為0。負值提高優先級,正值降低優先級。普通用戶只能調高Nice值(降低優先級),需root權限才能調低Nice值。
-
ADDR? //內存地址(Address),在進程狀態中通常指進程的代碼或數據在內存中的位置。
-
SZ? ? ?? //內存大小(Size),表示進程占用物理內存的頁數(Page)
-
WCHAN? ? ?//等待通道(Wait Channel),顯示進程當前阻塞時所調用的內核函數名稱。
-
STIME? ? ?? //啟動時間(Start Time),格式通常為
HH:MM:SS
。對于運行超過24小時的進程,可能顯示為日期(如Dec01
)。
進程狀態 | ||||
R(Running) | 進程正在運行或就緒 | < | 高優先級進程。 | |
S(Sleeping | 進程處于可中斷的睡眠狀態 | N | 低優先級進程 | |
D(Uninterruptible Sleep) | 進程處于不可中斷的睡眠狀態(通常與硬件I/O相關) | s | 進程是會話的首進程 | |
Z(Zombie) | 進程已終止,但父進程尚未回收其資源。 | l | 進程是多線程的 | |
T(Stopped) | 進程被信號(如SIGSTOP)暫停。 | + | 進程位于前臺進程組 |
????????前臺運行是指程序或進程直接在用戶可見的終端或界面中執行,占著命令提示符,并實時顯示輸出信息。
????????當父進程先于子進程終止時,子進程會變為孤兒進程(Orphan Process)。此時子進程會被系統的systemd 進程(PID=1)接管負責回收其資源,避免僵尸進程的產生。
? ? ? ? 注意:不同時間查看同一指令的進程,pid也是不同的。
-
# top? ? ? ? ?
- //實時動態查看進程狀態
(四)查看硬盤
-
# df -hT? ? ? ?
- //查看容量使用情況
-
# df -i? ? ? ? ?
- ?//查看inode
-
# iostat 數字1 數字2???? ?
- //查看硬盤的IO。1時間間隔,2次數
(五)查看網卡
-
# ethtool ens33? ? ? ?
- //查看網卡帶寬
????????
-
# ifstat
- //查看接收/發送數據包。接受/發送的錯誤/丟棄數據包數量
????????device通常指物理硬件設備(如網卡),而interface是操作系統對設備的邏輯抽象,用于配置網絡參數(如IP地址、子網掩碼等)。例如,一塊物理網卡(device)可能對應多個邏輯接口(interface)
通常一個interface僅關聯一個物理或虛擬device。但通過網卡聚合可以關聯多個device。
一個物理device可以關聯多個interface。
-
# sar -n DEV 數字1 數字2? ? ?
-
//網卡IO
-
# iftop -i 接口
- //實時監控網絡流量
千兆網卡的理論最大傳輸速率為?1 Gbps,換算成字節單位約為?125 MB/s(兆字節每秒)
服務器連接硬盤的方法
直接連接(內置硬盤):將硬盤通過SATA或SAS接口直接連接到服務器主板。需確保服務器機箱有足夠的硬盤托架和電源供應。適用于需要高速本地存儲的場景,如數據庫或虛擬機。
通過RAID卡連接:使用RAID卡將多個硬盤組成RAID陣列,提升性能或冗余。RAID卡通過PCIe插槽與服務器主板連接,硬盤通過SATA/SAS線連接到RAID卡。適用于需要數據冗余或高性能存儲的場景。
外部存儲設備連接:通過USB、eSATA或Thunderbolt接口連接外部硬盤。適用于臨時備份或數據傳輸,但性能和穩定性可能不如內置方案。
網絡存儲連接(NAS/SAN):硬盤安裝在NAS或SAN設備中,服務器通過以太網(NAS)或光纖通道(SAN)訪問存儲。適用于多服務器共享存儲或需要高擴展性的場景。需配置網絡和存儲協議(如NFS、iSCSI)。
三、Linux系統運行模式
Linux系統的運行模式主要分為以下幾種,每種模式對應不同的系統狀態和功能:
1、傳統SysVinit系統使用運行級別來定義系統狀態:
- 0:關機模式(halt)
- 1:單用戶模式(救援模式,僅root權限)
- 2:多用戶模式(無網絡服務)
- 3:完整多用戶模式(命令行界面)
- 4:保留未使用(用戶可自定義)
- 5:圖形界面模式(X11)
- 6:重啟模式
2、現代Linux系統(使用systemd)通過“目標”替代傳統運行級別:
- poweroff.target:關機(對應運行級別0)
- rescue.target:單用戶救援模式(對應運行級別1)
- multi-user.target:多用戶命令行模式(對應運行級別3)
- graphical.target:圖形界面模式(對應運行級別5)
- reboot.target:重啟(對應運行級別6)
- # who -r? ? ? ? ?//查看當前運行模式
- # init 數字????????//切換運行模式命令(需root權限)
- # runlevel? ? ? ? //顯示系統之前和當前所處的運行模式
- # systemctl isolate graphical.target? ? ? //臨時切換運行模式
- ls -l /etc/systemd/system/default.target? ? ? ? ?//查看當前系統的默認允許模式
????????systemctl isolate multi-user.target //字符模式
????????systemctl isolate graphical.target? ?//圖形模式
- # systemctl set-deafault?graphical.target? ? ? //修改默認運行級別
-
?#?dmidecode memory | less? ?
-
//查看系統配置
????????
????????