Linux入門教程 第十五章 Linux 系統調優工具

文章目錄

  • 一、系統調優概述與 CPU 負載查看
    • 1.使用 uptime 查看系統負載
    • 2.使用 top 按 CPU 使用率排序
    • 3.使用 ps 查看 CPU 使用最多的進程
    • 4.使用 mpstat 查看 CPU 詳細狀態
  • 一、查看內存運行狀態
    • 1.使用 free 查看內存使用
    • 2.查看 /proc/meminfo 獲取詳細內存信息
    • 3.使用 top 按內存使用排序
    • 4.使用 ps 查看內存使用最多的進程
  • 三、查看磁盤 I/O 狀態
    • 1.查看文件系統塊大小
      • EXT4:
      • XFS:
    • 2.使用 iostat 查看磁盤 I/O
    • 3.使用 dd 測試磁盤寫入
    • 4.使用 iotop 查看實時 I/O 進程
  • 四、查看網絡狀態
    • 1.使用 nload 查看實時帶寬
    • 2.使用 nethogs 查看進程網絡使用
  • 五、查看系統整體狀態
    • 1.使用 vmstat 查看系統整體狀態
    • 2.使用 sar 記錄系統狀態
    • 3.查看 sar 歷史日志


一、系統調優概述與 CPU 負載查看

1.使用 uptime 查看系統負載

uptime
[root@centos7 /]# uptime19:40:21 up  9:25,  2 users,  load average: 0.00, 0.01, 0.05

解讀:

  • 輸出格式: 時間 運行時間 登錄用戶數 平均負載(1分鐘、5分鐘、15分鐘)
    若1分鐘負載值 > CPU核心數,說明系統可能過載。
  • 舉個列子:若系統CPU核心數為1,此時1分鐘負載值(1.25)> 1,說明系統可能短暫過載(需結合5分鐘/15分鐘負載趨勢綜合判斷)

2.使用 top 按 CPU 使用率排序

步驟:

  1. 運行 top ;
  2. 按大寫 P 按 CPU 使用率降序排列。

3.使用 ps 查看 CPU 使用最多的進程

ps -aux --sort -pcpu | head -10
ps -aux:列出系統中所有進程的詳細信息
a:顯示所有用戶的進程
u:以用戶為中心的格式顯示(包含 CPU、內存等使用信息)
x:包括沒有控制終端的進程
--sort -pcpu:按照 CPU 使用率(pcpu)進行排序,負號表示降序排列
| head -10:通過管道將結果傳遞給 head 命令,只顯示前 10

4.使用 mpstat 查看 CPU 詳細狀態

mpstat -P ALL 1 5
mpstat:是系統性能監控工具 sysstat 包中的命令,用于報告 CPU 的統計信息
-P ALL:顯示所有 CPU 核心(包括單個核心和整體平均)的統計數據
1:采樣間隔時間,單位為秒(這里表示每 1 秒采集一次數據)
5:采樣次數(這里表示總共采集 5 次)
[root@centos7 /]# mpstat -P ALL 1 5
Linux 3.10.0-1160.119.1.el7.x86_64 (centos7.2) 	2025年08月27日 	_x86_64_	(4 CPU)20時23分18秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
20時23分19秒  all    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.75
20時23分19秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20時23分19秒    1    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   99.01
20時23分19秒    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20時23分19秒    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.0020時23分19秒  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
20時23分20秒  all    0.00    0.00    0.25    0.00    0.00    0.00    0.00    0.00    0.00   99.75
20時23分20秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20時23分20秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20時23分20秒    2    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20時23分20秒    3    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
。。。
%usr :用戶空間CPU占比;
%sys :內核空間CPU占比;
%iowait :等待I/O占比;
%idle :空閑占比。

一、查看內存運行狀態

1.使用 free 查看內存使用

free -m
[root@centos7 /]# free -mtotal        used        free      shared  buff/cache   available
Mem:           3770         497        2201          14        1071        3015
Swap:          4095           0        4095
available 列表示實際可用內存(包括可回收的緩存)。

2.查看 /proc/meminfo 獲取詳細內存信息

[root@centos7 /]# cat /proc/meminfo
MemTotal:        3861076 kB
MemFree:         2254660 kB
MemAvailable:    3087532 kB
Buffers:              16 kB
Cached:          1007196 kB
SwapCached:            0 kB
Active:          1030832 kB
Inactive:         221516 kB
Active(anon):     160876 kB
Inactive(anon):    99056 kB
Active(file):     869956 kB
Inactive(file):   122460 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194300 kB
SwapFree:        4194300 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        245160 kB
Mapped:            98912 kB
Shmem:             14796 kB
Slab:             157944 kB
SReclaimable:      90092 kB
SUnreclaim:        67852 kB
KernelStack:        7440 kB
PageTables:        19872 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     6124836 kB
Committed_AS:    2228920 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      183528 kB
VmallocChunk:   34359310332 kB
Percpu:            36352 kB
HardwareCorrupted:     0 kB
AnonHugePages:     65536 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      126784 kB
DirectMap2M:     4067328 kB
DirectMap1G:     2097152 kB
Active :活躍內存;
Inactive :非活躍內存(可被換出)。

3.使用 top 按內存使用排序

  1. 運行 top ;
  2. 按大寫 M 按內存使用降序排列。

4.使用 ps 查看內存使用最多的進程

ps -aux --sort -rss | head -10

三、查看磁盤 I/O 狀態

1.查看文件系統塊大小

EXT4:

tune2fs -l /dev/sda1 | grep "Block size"
用于 ext 系列文件系統(ext2/ext3/ext4)
tune2fs -l 會列出該文件系統的詳細信息
輸出類似:Block size: 4096(表示塊大小為 4096 字節)

XFS:

fs_growfs -l /dev/sda1 | grep bsize
用于 XFS 文件系統
xfs_growfs -l 會顯示 XFS 文件系統的布局信息
輸出類似:bsize=4096(表示塊大小為 4096 字節)

2.使用 iostat 查看磁盤 I/O

iostat -d -k -p /dev/sda 1 5
iostat:系統 I/O 統計工具,用于監控磁盤和 CPU 的輸入輸出性能
-d:只顯示磁盤(device)的統計信息,不顯示 CPU 信息
-k:以 KB(千字節)為單位顯示數據(默認是塊)
-p /dev/sda:顯示指定磁盤/dev/sda及其所有分區的統計信息
1 5: 采樣間隔為1秒,共采樣5次
[root@centos7 /]# iostat -d -k -p /dev/sda 1 5
Linux 3.10.0-1160.119.1.el7.x86_64 (centos7.2) 	2025年08月27日 	_x86_64_	(4 CPU)Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.77        89.22       501.00    3297947   18518508
sda1              0.06        14.52         0.06     536691       2048
sda2              0.11        55.83         0.00    2063652          0
sda3              1.60        18.79       500.94     694368   18516460
。。。

kB_read/s :每秒讀取數據量;
kB_wrtn/s :每秒寫入數據量。

3.使用 dd 測試磁盤寫入

dd if=/dev/zero of=testfile bs=1M count=1000; sync
dd if=/dev/zero of=testfile:使用dd命令從/dev/zero(一個源源不斷輸出 0 字節的特殊設備)讀
取數據,寫入到名為testfile的文件中
bs=1M:設置每次讀寫的塊大小為 1MB
count=1000:設置讀寫的塊數量為 1000,所以總文件大小是 1MB×1000=1000MB(約 1GB)
; sync:分號分隔兩個命令,sync用于將內存中的數據強制刷新到磁盤,確保文件真正寫入硬盤

4.使用 iotop 查看實時 I/O 進程

iotop -o -d 1
iotop:一個專門監控磁盤 I/O 的工具(需要 root 權限運行),可以顯示每個進程的 I/O 使用情況
-o:只顯示正在產生 I/O 活動的進程(過濾掉沒有 I/O 操作的進程,更簡潔)
-d 1:設置刷新間隔為 1 秒(每秒更新一次數據)

四、查看網絡狀態

1.使用 nload 查看實時帶寬

yum install epel-release
yum install nload
nload
實時網絡流量狀態 (Incoming/Outgoing)
指標 值 說明
當前速率 (Curr) 41.12 kBit/s 瞬時接收速率
平均速率 (Avg) 166.04 kBit/s 本次會話的平均接收速率
最小速率 (Min) 3.49 kBit/s 本次會話的最小接收速率
最大速率 (Max) 1.33 MBit/s 本次會話的最大接收速率 (峰值)
總數據量 (Ttl) 81.77 MByte 本次會話累計接收的總數據量

操作:
在另一終端使用ab壓測

ab -n 1000 -c 2 http://www.baidu.com/
#安裝包 httpd-tools
ab:Apache 自帶的 HTTP 壓力測試工具,用于模擬多個用戶并發訪問網站并統計性能數據
-n 1000:指定總請求數為 1000 次(總共向百度首頁發送 1000 個請求)
-c 2:指定并發數為 2(每次同時發送 2 個請求,模擬 2 個用戶同時訪問)
http://www.baidu.com/:目標測試的 URL(這里是百度首頁)
Requests per second: 50.00 [#/sec] (mean) # 平均每秒處理請求數(吞吐量)
Time per request: 40.000 [ms] (mean) # 平均每個請求的響應時間
Time per request: 20.000 [ms] (mean, across all concurrent requests) # 并
發情況下每個請求的實際等待時間
Percentage of the requests served within a certain time (ms):
50% 30
90% 50
99% 80 # 99%的請求在80ms內完成

就是輸入壓測后在另一終端使用nload進行監測

2.使用 nethogs 查看進程網絡使用

nethogs

操作:
在另一終端使用 wget 下載大文件,觀察 nethogs 輸出。

五、查看系統整體狀態

1.使用 vmstat 查看系統整體狀態

vmstat 1 5 虛擬內存統計(Virtual Memory Statistics)工具,能全面反映系統運行狀態
1:采樣間隔時間,單位為秒(每 1 秒刷新一次數據)
5:采樣次數(總共輸出 5 組數據)[root@centos7 /]# vmstat 1 1
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st1  0      0 2254656     16 1097308    0    0    22   123   16   18  0  0 100  0  0r:等待運行的進程數(如果長期大于 CPU 核心數,說明 CPU 不夠用)
b:處于不可中斷睡眠的進程數(通常是等待 I/O,數值高說明 I/O 繁忙)
si/so:每秒從 swap 分區讀入 / 寫入內存的數據量(非 0 說明內存不足,開始用交換分區)
bi/bo:每秒從塊設備讀入 / 寫入的數據量(反映磁盤 I/O 活動)
wa:CPU 等待 I/O 的時間百分比(超過 20% 說明 I/O 成為瓶頸)
us/sy:用戶態 / 內核態占用 CPU 的百分比(us 高說明應用消耗 CPU 多,sy 高可能是系統調用頻繁)
id:CPU 空閑百分比(過低說明 CPU 負載高)

r :運行隊列長度;
b :阻塞進程數;
si/so :換入/換出內存;
bi/bo :塊讀/寫。

2.使用 sar 記錄系統狀態

sar -u 2 5 -o cpu.sar # 記錄CPU
-u:查看 CPU 使用率統計
2 5:每 2 秒采樣一次,共采樣 5-o cpu.sar:將結果保存到文件cpu.sar(方便后續用sar -f cpu.sar查看)
輸出中重點關注:
%user:用戶程序占用 CPU 的比例
%sys:系統內核占用 CPU 的比例
%idle:CPU 空閑比例(過低說明 CPU 負載高)
sar -r 1 5 # 記錄內存
-r:查看內存和交換空間使用情況
1 5:每 1 秒采樣一次,共采樣 5 次
輸出中重點關注:
memused:已使用內存百分比
freemem:空閑內存大小
swapused:交換空間使用百分比(非 0 可能表示內存緊張)
sar -n DEV 1 5 # 記錄網絡
-r:查看內存和交換空間使用情況
1 5:每 1 秒采樣一次,共采樣 5 次
輸出中重點關注:
memused:已使用內存百分比
freemem:空閑內存大小
swapused:交換空間使用百分比(非 0 可能表示內存緊張)
3. sar -n DEV 1 5(監控網絡)
-n DEV:查看網絡接口(如 eth0、ens33)的流量統計
1 5:每 1 秒采樣一次,共采樣 5 次
輸出中重點關注:
rxpck/s:每秒接收的數據包數
txpck/s:每秒發送的數據包數
rxkB/s:每秒接收的千字節數
txkB/s:每秒發送的千字節數(數值過高可能表示網絡帶寬飽和)

查看記錄:

sar -u -f cpu.sar

3.查看 sar 歷史日志

ls /var/log/sa
sar -n DEV -f /var/log/sa/sa15

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94915.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94915.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94915.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Docker基礎】Docker-compose進階配置:健康檢查與服務就緒

目錄 引言 1 Docker健康檢查基礎概念 1.1 什么是健康檢查 1.2 健康檢查的狀態 2 healthcheck配置詳解 2.1 基本語法 2.2 配置參數解釋 2.3 健康檢查命令的編寫 2.4 健康檢查的工作流程 3 服務依賴與健康檢查 3.1 depends_on的基本用法 3.2 結合健康檢查的依賴 3.3…

Redis大Key處理流程與注意事項

概述 Redis大Key問題是在生產環境中經常遇到的技術挑戰,它可能導致內存占用過高、網絡延遲增加、阻塞其他操作等嚴重問題。本文將深入探討Redis大Key的識別、處理流程以及相關注意事項。 什么是Redis大Key 定義標準 String類型: 單個Key的Value超過10KBHash類型: 單…

領悟8種常見的設計模式

很多 Java 初學者覺得設計模式 “抽象難學”,其實是沒抓住核心邏輯 —— 設計模式不是 “炫技代碼”,而是前輩們總結的 “解決高頻復雜問題的通用思路”,好吧,你可以過一遍了解這些大概是個什么東西不求我們能夠完全理解&#xff…

復雜BI報表SQL

復雜SQL 一行多個人員,平均瓜分總產量。 -- 西寧硅料三期 with b as ( select(row_number() OVER(PARTITION BY t1.tool ORDER BY t1.tool ) - 1) AS help_topic_id from((select1 AS tool union allselect1 AS tool union allselect1 AS tool union allselect1 AS …

bin log 和 redo log有什么區別

問題bin log 和 redo log有什么區別我的回答首先,這兩種日志的作用不同。redo log是InnoDB引擎特有的,主要用于崩潰恢復,保證事務的持久性。而bin log是MySQL服務層的日志,主要用于主從復制和數據恢復。從層次上看,red…

導入文件允許合并表格

本來呢,已經有幾年沒咋寫博客了,但是好像網上沒什么好的合并導入可以抄的,周末加班了一天弄出來了,想一想也不算造輪子,可以露一手出來,最近也挺喜歡寫注釋的,應該方便大家抄的public class Tra…

WebIDEPLOY 技術驅動櫻桃溯源管理系統的價值重塑與落地實踐—— 以櫻桃溯源管理系統構建產業信任體系的路徑探索

一、WebIDEPLOY 技術支撐下的櫻桃溯源系統核心架構櫻桃種植從開花到銷售的全流程數據記錄,需要兼顧專業性與易操作性,WebIDEPLOY 技術以 “零代碼降低門檻、云原生優化成本” 的特性,成為連接數字工具與櫻桃種植的關鍵紐帶。系統核心架構圍繞…

零知開源——基于STM32F407VET6實現ULN2003AN驅動28BYJ-48步進電機控制系統

?零知IDE 是一個真正屬于國人自己的開源軟件平臺,在開發效率上超越了Arduino平臺并且更加容易上手,大大降低了開發難度。零知開源在軟件方面提供了完整的學習教程和豐富示例代碼,讓不懂程序的工程師也能非常輕而易舉的搭建電路來創作產品&am…

如何多個手機設備的實現不同公網IP

為了避免多個手機設備使用相同的公網IP地址導致平臺檢測關聯,可以通過以下方法實現不同公網IP的分配和管理. 一、移動網絡(SIM 卡)方案 1.移動數據與Wi-Fi切換:通過切換移動數據和不同Wi-Fi網絡(如家庭Wi-Fi、公共Wi-F…

沙箱操作指南

這是一份通用且詳細的沙箱操作指南。沙箱(Sandbox)是一種安全隔離環境,常用于測試未經驗證的代碼、軟件、文件或訪問可疑網址,而不會對真實系統造成危害。 本指南將分為以下幾個部分: 沙箱是什么? 為什么需要使用沙箱? 如何使用沙箱?(三種主要類型) 最佳實踐與注意事…

【數字IC后端】引導時鐘樹CTS的生成方向之anchor driver

如何控制數字IC后端CTS的生成方向?我們可以引入anchor driver來實現引導。景芯12nm車規APR實戰中,我們可以看到,絕大部分的sink都受控于xxxx_tessent_occ_clk_cpu_inst/tessent_persistent_cell_clock_out_mux/C10_ctmi_1這個mux,…

「Java EE開發指南」如何使用MyEclipse啟用自動JSP驗證?

自動JSP驗證可以在兩種情況下啟用,在本文中您將學習如何正確使用它。 該特性在MyEclipse中可用。 MyEclipse v2025.1離線版下載 您可以在保存JSP編輯器的內容或執行“Clean”操作時啟用自動JSP驗證。要進行正確的驗證,必須使用完整的JDK JVM啟動MyEcl…

leetcode_73 矩陣置零

1. 題意 給定一個 m x n 的矩陣,如果一個元素為 0 ,則將其所在行和列的所有元素都設為 0 。請使用 原地 算法。 2. 題解 想不到O(1)的空間復雜度的做法, 只有抄抄題解這樣子才能維持的了生活。 2.1 暴力 維護兩個標記數組,分…

優雅地實現ChatGPT式的打字機效果:Spring Boot 流式響應

01 引言 之前專門介紹過流式響應的數據的接收、發送以及使用SSE由服務端推送數據的文章,但是要求前端必須使用EventSource訂閱實現。 有沒有通過直接通過瀏覽器訪問或者Fetch API直接調用的方式呢?效果還能和ChatGPT一樣,實現打字機的效果呢&…

Git 刪除文件

在 Git 中,刪除文件同樣被視為一種修改操作。下面我們通過實際操作演示如何刪除文件。假設要刪除文件 file5,如果你直接在文件系統中執行了刪除:這種直接刪除的方式并不會在 Git 中生效,反而會導致工作區與版本庫不一致。使用 git…

虛幻基礎:角色變換角色視角蒙太奇運動

能幫到你的話,就給個贊吧 😘 文章目錄角色視角機臂使用pawn控制旋轉:旋轉體將失去作用旋轉體攝像機:可以使用旋轉體控制:pawn不起作用角色變換角色移動:由移動組件控制移動方向:給組件任意一個方…

【LeetCode】31. 下一個排列

文章目錄31. 下一個排列題目描述示例 1:示例 2:示例 3:提示:解題思路1. 問題本質與字典序回顧2. 經典算法三步曲(必須原地、常數空間)3. 直觀示例與過程可視化4. 與“62. 不同路徑”風格對應的分析維度4.1 …

CVPR2025丨VL2Lite:如何將巨型VLM的“知識”精煉后灌入輕量網絡?這項蒸餾技術實現了任務專用的極致壓縮

關注gongzhonghao【CVPR頂會精選】小模型(Small Models)通常指參數量較小、計算與存儲成本更低的深度學習模型。近年來,它們在移動端部署、邊緣計算和隱私保護等場景中快速發展,逐漸成為大模型的輕量化補充。隨著蒸餾、剪枝、量化…

【SystemUI】鎖屏來通知默認亮屏Wake模式

一、問題描述 基于 Android 14平臺,鎖屏狀態下來通知時默認是進入Doze模式,此時屏幕不能點擊只能查看通知信息且很快滅屏,用戶體驗不是很好,要求修改為通知直接亮屏。二、問題分析 梳理鎖屏狀態下(特指設備息屏或處于D…

高并發寫入、毫秒級查詢——盤古信息攜手 TDengine 時序數據庫解決六大技術挑戰

小T導讀:廣東盤古信息科技股份有限公司(下文簡稱盤古信息)成立于 2005 年,是一家基于工業互聯網平臺的數字化管理解決方案供應商,公司自主研發的 IMS(數字化智能制造系統)可為離散、流程及混合制…