Ubuntu 22.04 系統效能監控與調校

在管理 Ubuntu 22.04 伺服器或工作站時,了解如何監控和調校系統效能是非常重要的技能。本文將介紹常用的效能監控工具,以及針對 CPU、記憶體、磁碟和網路的分析與調校方法。

效能監控工具

top - 即時系統監控

top 是 Linux 系統內建的即時系統監控工具,可以顯示 CPU、記憶體使用率以及正在執行的程序。

1
top

常用快捷鍵:

  • P:按 CPU 使用率排序
  • M:按記憶體使用率排序
  • k:終止指定的程序
  • q:退出 top

htop - 增強版系統監控

htoptop 的增強版本,提供更友善的圖形介面和更多功能。

安裝 htop:

1
2
sudo apt update
sudo apt install htop

執行 htop:

1
htop

htop 的優點:

  • 彩色顯示,更容易閱讀
  • 支援滑鼠操作
  • 可以水平和垂直捲動查看所有程序
  • 可以直接在介面中終止程序

vmstat - 虛擬記憶體統計

vmstat 用於報告虛擬記憶體、程序、CPU 活動等統計資訊。

1
2
# 每 2 秒更新一次,共顯示 5 次
vmstat 2 5

輸出欄位說明:

  • r:等待執行的程序數
  • b:處於不可中斷睡眠狀態的程序數
  • swpd:已使用的虛擬記憶體大小
  • free:空閒記憶體大小
  • si/so:從磁碟交換進/出的記憶體大小
  • bi/bo:從區塊裝置讀取/寫入的區塊數
  • us/sy/id/wa:使用者/系統/閒置/等待 I/O 的 CPU 時間百分比

CPU 效能分析

檢視 CPU 資訊

1
2
3
4
5
6
7
8
# 查看 CPU 詳細資訊
lscpu

# 查看 CPU 核心數
nproc

# 即時監控 CPU 使用率
mpstat -P ALL 1

如需安裝 mpstat

1
sudo apt install sysstat

CPU 負載分析

1
2
3
4
5
# 查看系統負載
uptime

# 查看詳細負載資訊
cat /proc/loadavg

負載平均值解讀:

  • 數值小於 CPU 核心數:系統負載正常
  • 數值等於 CPU 核心數:系統滿載
  • 數值大於 CPU 核心數:系統超載,程序需要等待

記憶體效能分析

記憶體使用狀況

1
2
3
4
5
# 查看記憶體使用情況(人類可讀格式)
free -h

# 查看詳細記憶體資訊
cat /proc/meminfo

記憶體監控

1
2
3
4
5
# 使用 vmstat 監控記憶體
vmstat -s

# 查看各程序記憶體使用
ps aux --sort=-%mem | head -20

Swap 空間管理

1
2
3
4
5
# 查看 swap 使用情況
swapon --show

# 查看 swappiness 設定值
cat /proc/sys/vm/swappiness

磁碟效能分析

磁碟使用狀況

1
2
3
4
5
# 查看磁碟使用情況
df -h

# 查看目錄大小
du -sh /var/*

磁碟 I/O 監控

1
2
3
4
5
6
7
8
# 安裝 iotop
sudo apt install iotop

# 監控磁碟 I/O
sudo iotop

# 使用 iostat 監控
iostat -xz 1

磁碟效能測試

1
2
3
4
5
6
7
8
# 寫入測試
dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=dsync

# 讀取測試
dd if=/tmp/testfile of=/dev/null bs=1G count=1

# 清理測試檔案
rm /tmp/testfile

網路效能分析

網路狀態監控

1
2
3
4
5
6
7
8
# 查看網路介面狀態
ip -s link

# 查看網路連線
ss -tuln

# 查看網路統計
netstat -i

網路頻寬測試

1
2
3
4
5
6
7
8
# 安裝 iperf3
sudo apt install iperf3

# 在伺服器端執行
iperf3 -s

# 在客戶端執行(替換 IP)
iperf3 -c <伺服器IP>

網路延遲測試

1
2
3
4
5
6
7
8
9
# ping 測試
ping -c 10 8.8.8.8

# 追蹤路由
traceroute google.com

# MTR(結合 ping 和 traceroute)
sudo apt install mtr
mtr google.com

系統調校建議

CPU 調校

1
2
3
4
5
# 查看當前 CPU 調速器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

# 設定為效能模式
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

記憶體調校

調整 swappiness(降低 swap 使用):

1
2
3
4
5
# 臨時調整
sudo sysctl vm.swappiness=10

# 永久調整(編輯 /etc/sysctl.conf)
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf

調整快取壓力:

1
sudo sysctl vm.vfs_cache_pressure=50

磁碟調校

使用 SSD 時的優化:

1
2
3
# 啟用 TRIM
sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer

調整 I/O 排程器:

1
2
3
4
5
# 查看當前排程器
cat /sys/block/sda/queue/scheduler

# SSD 建議使用 none 或 mq-deadline
echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler

網路調校

調整網路緩衝區:

1
2
3
4
5
6
# 增加接收緩衝區
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216

# 啟用 TCP 快速開啟
sudo sysctl -w net.ipv4.tcp_fastopen=3

永久保存網路設定:

1
2
3
4
5
6
cat << EOF | sudo tee -a /etc/sysctl.conf
net.core.rmem_max=16777216
net.core.wmem_max=16777216
net.ipv4.tcp_fastopen=3
EOF
sudo sysctl -p

自動化監控

使用 cron 定期收集資訊

建立監控腳本 /usr/local/bin/system-monitor.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash
LOG_DIR="/var/log/system-monitor"
mkdir -p $LOG_DIR
DATE=$(date +%Y%m%d-%H%M%S)

# 收集系統資訊
echo "=== System Info ===" > $LOG_DIR/report-$DATE.log
uptime >> $LOG_DIR/report-$DATE.log
free -h >> $LOG_DIR/report-$DATE.log
df -h >> $LOG_DIR/report-$DATE.log
vmstat 1 5 >> $LOG_DIR/report-$DATE.log

設定 cron 任務:

1
2
# 每小時執行一次
echo "0 * * * * root /usr/local/bin/system-monitor.sh" | sudo tee /etc/cron.d/system-monitor

總結

Ubuntu 22.04 提供了豐富的效能監控和調校工具。透過本文介紹的方法,你可以:

  1. 使用 tophtopvmstat 等工具即時監控系統狀態
  2. 分析 CPU、記憶體、磁碟和網路的效能瓶頸
  3. 根據實際需求進行系統調校
  4. 設定自動化監控收集系統資訊

建議在進行任何調校之前,先建立基準測試,並在測試環境中驗證調校效果。定期監控系統效能,可以及早發現潛在問題,確保系統穩定運行。

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy