1. 引言
在 Linux 系统管理和故障排查过程中,性能监控是至关重要的技能。掌握核心监控工具能够帮助系统管理员快速定位性能瓶颈,及时解决系统问题。本文将详细介绍三个最常用且强大的性能监控工具:top、vmstat 和 iostat,通过详细的步骤和实际案例,帮助初学者快速掌握这些工具的使用方法。
2. 环境准备与工具安装
2.1 系统环境检查
首先确认您的 Linux 系统环境,大多数现代 Linux 发行版都预装了这些工具,但某些最小化安装可能需要手动安装。
创建检查脚本文件:check_environment.sh
bash
#!/bin/bash
# 检查系统信息
echo "=== 系统信息 ==="
echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2 | tr -d '\"')"
echo "内核版本: $(uname -r)"
echo "系统架构: $(uname -m)"
# 检查工具是否已安装
echo -e "\n=== 工具检查 ==="
tools=("top" "vmstat" "iostat")
for tool in "${tools[@]}"; do
if command -v $tool &> /dev/null; then
echo "✓ $tool 已安装: $(which $tool)"
else
echo "✗ $tool 未安装"
fi
done
# 检查系统负载
echo -e "\n=== 系统负载 ==="
echo "当前时间: $(date)"
echo "运行时间: $(uptime | awk -F'load average:' '{print $1}')"
echo "系统负载: $(uptime | awk -F'load average:' '{print $2}')"
运行检查脚本:
bash
chmod +x check_environment.sh
./check_environment.sh
2.2 工具安装
如果系统中缺少某些工具,使用以下命令安装:
对于 Ubuntu/Debian 系统:
bash
sudo apt update
sudo apt install procps sysstat -y
对于 CentOS/RHEL 系统:
bash
sudo yum install procps-ng sysstat -y
# 或者对于较新版本使用:
sudo dnf install procps-ng sysstat -y
3. top 命令详解
3.1 top 基础使用
top 命令是 Linux 中最常用的实时系统监控工具,可以动态查看系统整体性能和各个进程的资源占用情况。
创建监控脚本:basic_top_monitor.sh
bash
#!/bin/bash
echo "启动基础 top 监控..."
echo "按 'q' 退出监控"
# 启动 top 命令
top -b -n 1 | head -20
运行脚本:
bash
chmod +x basic_top_monitor.sh
./basic_top_monitor.sh
3.2 top 输出详解
top 命令的输出分为两个部分:系统概览区和进程列表区。
系统概览区解读:
- 第一行:系统时间、运行时间、用户数、平均负载
- 第二行:进程总数(运行中、睡眠中、停止、僵尸)
- 第三行:CPU 使用情况(用户空间、系统内核、空闲等)
- 第四行:内存使用情况(总内存、空闲、已使用、缓冲)
- 第五行:交换分区使用情况
创建详细的 top 解析脚本:detailed_top_analysis.sh
bash
#!/bin/bash
echo "=== 详细 top 分析 ==="
echo "采集系统状态数据..."
# 采集 top 输出并保存到临时文件
top -b -n 1 > /tmp/top_output.txt
echo -e "\n--- 系统概览 ---"
head -5 /tmp/top_output.txt
echo -e "\n--- 进程资源占用 TOP 10 ---"
sed -n '7,17p' /tmp/top_output.txt
echo -e "\n--- 关键指标解释 ---"
cat << 'EOF'
关键指标说明:
1. load average: 系统1分钟、5分钟、15分钟的平均负载
2. %Cpu(s):
- us: 用户空间CPU占用
- sy: 内核空间CPU占用
- id: CPU空闲时间
- wa: IO等待时间
3. KiB Mem:
- total: 总内存
- free: 空闲内存
- used: 已用内存
- buff/cache: 缓冲/缓存内存
EOF
# 清理临时文件
rm -f /tmp/top_output.txt
3.3 top 交互命令
在 top 运行界面中,可以使用以下交互命令:
bash
# 启动交互式 top
top
# 交互命令参考:
# h - 显示帮助
# 1 - 显示每个CPU核心的使用情况
# M - 按内存使用排序
# P - 按CPU使用排序
# T - 按运行时间排序
# k - 结束指定进程
# r - 重新设置进程优先级
# z - 彩色/黑白显示切换
# W - 保存当前配置
3.4 top 高级用法
创建高级监控脚本:advanced_top_monitor.sh
bash
#!/bin/bash
echo "=== top 高级监控 ==="
echo "监控周期: 30秒"
echo "输出文件: /tmp/top_monitor.log"
# 监控30秒,每2秒采样一次
top -b -d 2 -n 15 > /tmp/top_monitor.log &
echo "监控进行中..."
sleep 30
echo -e "\n=== 监控结果分析 ==="
echo "总采样次数: $(grep -c "top -" /tmp/top_monitor.log)"
# 分析CPU使用率
echo -e "\n--- CPU 使用率统计 ---"
grep "%Cpu(s)" /tmp/top_monitor.log | awk '
BEGIN { count=0; us_sum=0; sy_sum=0; id_sum=0 }
{
us_sum += $2;
sy_sum += $4;
id_sum += $8;
count++
}
END {
printf "平均用户空间CPU: %.2f%%\n", us_sum/count
printf "平均内核空间CPU: %.2f%%\n", sy_sum/count
printf "平均空闲CPU: %.2f%%\n", id_sum/count
}'
# 分析内存使用
echo -e "\n--- 内存使用统计 ---"
grep "MiB Mem" /tmp/top_monitor.log | awk '
BEGIN { count=0; total_sum=0; free_sum=0; used_sum=0 }
{
total_sum += $4;
free_sum += $6;
used_sum += $8;
count++
}
END {
printf "平均总内存: %.2f MiB\n", total_sum/count
printf "平均空闲内存: %.2f MiB\n", free_sum/count
printf "平均已用内存: %.2f MiB\n", used_sum/count
printf "平均内存使用率: %.2f%%\n", (used_sum/total_sum)*100
}'
4. vmstat 命令详解
4.1 vmstat 基础使用
vmstat 用于报告虚拟内存统计信息,可以监控进程、内存、分页、块IO、陷阱和CPU活动。
创建 vmstat 监控流程图:
创建基础 vmstat 监控脚本:basic_vmstat.sh
bash
#!/bin/bash
echo "=== vmstat 基础监控 ==="
echo "显示系统虚拟内存统计信息"
# 显示一次系统状态
echo -e "\n--- 当前系统状态 ---"
vmstat
echo -e "\n--- 带时间戳的监控(5次,间隔2秒)---"
vmstat -t 2 5
echo -e "\n--- 详细内存统计 ---"
vmstat -s
4.2 vmstat 输出字段详解
创建 vmstat 字段解析脚本:vmstat_field_analysis.sh
bash
#!/bin/bash
echo "=== vmstat 输出字段详细解析 ==="
cat << 'EOF'
Procs(进程):
r: 运行队列中的进程数
b: 处于不可中断睡眠状态的进程数
Memory(内存):
swpd: 使用的虚拟内存大小
free: 空闲物理内存大小
buff: 用作缓冲的内存大小
cache: 用作缓存的内存大小
Swap(交换分区):
si: 从磁盘交换到内存的数据量(KB/s)
so: 从内存交换到磁盘的数据量(KB/s)
IO(块设备):
bi: 从块设备接收的块数(块/s)
bo: 发送到块设备的块数(块/s)
System(系统):
in: 每秒中断次数
cs: 每秒上下文切换次数
CPU(中央处理器):
us: 用户进程占用CPU时间百分比
sy: 内核进程占用CPU时间百分比
id: 空闲CPU时间百分比
wa: 等待IO的CPU时间百分比
st: 虚拟机偷取时间百分比
EOF
echo -e "\n=== 实际监控示例 ==="
echo "监控10秒,每秒采样一次..."
vmstat 1 10
4.3 vmstat 高级监控
创建高级 vmstat 监控脚本:advanced_vmstat_monitor.sh
bash
#!/bin/bash
MONITOR_DURATION=30
INTERVAL=2
COUNT=$((MONITOR_DURATION / INTERVAL))
echo "=== vmstat 高级监控 ==="
echo "监控时长: ${MONITOR_DURATION} 秒"
echo "采样间隔: ${INTERVAL} 秒"
echo "采样次数: ${COUNT} 次"
# 创建监控日志文件
LOG_FILE="/tmp/vmstat_monitor_$(date +%Y%m%d_%H%M%S).log"
echo "日志文件: ${LOG_FILE}"
echo -e "\n开始监控..." | tee -a ${LOG_FILE}
vmstat -t ${INTERVAL} ${COUNT} | tee -a ${LOG_FILE}
echo -e "\n=== 监控数据分析 ===" | tee -a ${LOG_FILE}
# 分析运行队列
echo -e "\n--- 运行队列分析 ---" | tee -a ${LOG_FILE}
awk 'NR>2 {sum_r+=$1; max_r=($1>max_r)?$1:max_r} END {
printf "平均运行队列长度: %.2f\n", sum_r/(NR-2)
printf "最大运行队列长度: %d\n", max_r
}' ${LOG_FILE} | tee -a ${LOG_FILE}
# 分析内存使用
echo -e "\n--- 内存使用分析 ---" | tee -a ${LOG_FILE}
awk 'NR>2 {sum_swpd+=$3; sum_free+=$4; sum_buff+=$5; sum_cache+=$6} END {
count=NR-2
printf "平均虚拟内存使用: %.2f KB\n", sum_swpd/count
printf "平均空闲内存: %.2f KB\n", sum_free/count
printf "平均缓冲内存: %.2f KB\n", sum_buff/count
printf "平均缓存内存: %.2f KB\n", sum_cache/count
}' ${LOG_FILE} | tee -a ${LOG_FILE}
# 分析CPU使用率
echo -e "\n--- CPU 使用率分析 ---" | tee -a ${LOG_FILE}
awk 'NR>2 {sum_us+=$13; sum_sy+=$14; sum_id+=$15; sum_wa+=$16} END {
count=NR-2
printf "平均用户CPU: %.2f%%\n", sum_us/count
printf "平均系统CPU: %.2f%%\n", sum_sy/count
printf "平均空闲CPU: %.2f%%\n", sum_id/count
printf "平均等待IO CPU: %.2f%%\n", sum_wa/count
}' ${LOG_FILE} | tee -a ${LOG_FILE}
echo -e "\n详细监控日志已保存至: ${LOG_FILE}"
5. iostat 命令详解
5.1 iostat 基础使用
iostat 用于监控系统输入输出设备和CPU的使用情况,特别适合分析磁盘IO性能问题。
创建 iostat 监控流程图:
创建基础 iostat 监控脚本:basic_iostat.sh
bash
#!/bin/bash
echo "=== iostat 基础监控 ==="
echo -e "\n--- CPU 使用情况报告 ---"
iostat -c
echo -e "\n--- 设备使用情况报告 ---"
iostat -d
echo -e "\n--- 显示扩展统计信息 ---"
iostat -x
echo -e "\n--- 显示设备使用率和扩展统计 ---"
iostat -dx
echo -e "\n--- 定时监控(3次,间隔2秒)---"
iostat -dx 2 3
5.2 iostat 输出字段详解
创建 iostat 字段解析脚本:iostat_field_analysis.sh
bash
#!/bin/bash
echo "=== iostat 输出字段详细解析 ==="
cat << 'EOF'
CPU 统计字段:
%user: 用户级别CPU使用率
%nice: nice优先级进程的CPU使用率
%system: 系统级别CPU使用率
%iowait: CPU等待IO的时间百分比
%steal: 虚拟环境中的CPU偷取时间
%idle: CPU空闲时间百分比
设备统计字段:
rrqm/s: 每秒合并的读请求数
wrqm/s: 每秒合并的写请求数
r/s: 每秒完成的读请求数
w/s: 每秒完成的写请求数
rkB/s: 每秒读取的数据量(KB)
wkB/s: 每秒写入的数据量(KB)
avgrq-sz: 平均每次设备IO操作的数据量
avgqu-sz: 平均IO队列长度
await: 平均每次IO请求等待时间(毫秒)
r_await: 读请求平均等待时间
w_await: 写请求平均等待时间
svctm: 平均每次IO请求的服务时间
%util: 设备带宽使用率百分比
EOF
echo -e "\n=== 实际监控示例 ==="
echo "显示设备和CPU统计,每秒刷新,共5次..."
iostat -dxc 1 5
5.3 iostat 高级监控与分析
创建高级 iostat 监控脚本:advanced_iostat_monitor.sh
bash
#!/bin/bash
MONITOR_DURATION=30
INTERVAL=2
COUNT=$((MONITOR_DURATION / INTERVAL))
echo "=== iostat 高级监控 ==="
echo "监控时长: ${MONITOR_DURATION} 秒"
echo "采样间隔: ${INTERVAL} 秒"
echo "采样次数: ${COUNT} 次"
# 创建监控日志文件
LOG_FILE="/tmp/iostat_monitor_$(date +%Y%m%d_%H%M%S).log"
echo "日志文件: ${LOG_FILE}"
echo -e "\n开始监控..." | tee -a ${LOG_FILE}
iostat -dxct ${INTERVAL} ${COUNT} | tee -a ${LOG_FILE}
echo -e "\n=== 监控数据分析 ===" | tee -a ${LOG_FILE}
# 提取设备名(排除loop设备)
DEVICES=$(iostat -d | awk 'NR>3 && $1 !~ /^loop/ {print $1}' | head -5)
for DEVICE in ${DEVICES}; do
echo -e "\n--- 设备 ${DEVICE} 分析 ---" | tee -a ${LOG_FILE}
# 分析读写吞吐量
awk -v dev="${DEVICE}" '$1 == dev {
read_sum+=$3; write_sum+=$4;
read_kb_sum+=$5; write_kb_sum+=$6;
count++
} END {
if(count > 0) {
printf "平均读操作: %.2f 次/秒\n", read_sum/count
printf "平均写操作: %.2f 次/秒\n", write_sum/count
printf "平均读取量: %.2f KB/秒\n", read_kb_sum/count
printf "平均写入量: %.2f KB/秒\n", write_kb_sum/count
}
}' ${LOG_FILE} | tee -a ${LOG_FILE}
# 分析IO延迟和利用率
awk -v dev="${DEVICE}" '$1 == dev {
util_sum+=$14; await_sum+=$10;
count++
} END {
if(count > 0) {
printf "平均设备利用率: %.2f%%\n", util_sum/count
printf "平均IO等待时间: %.2f 毫秒\n", await_sum/count
}
}' ${LOG_FILE} | tee -a ${LOG_FILE}
done
# CPU使用率分析
echo -e "\n--- CPU 使用率分析 ---" | tee -a ${LOG_FILE}
awk '/^avg-cpu:/ {getline; user_sum+=$1; system_sum+=$3; iowait_sum+=$4; idle_sum+=$6; count++}
END {
printf "平均用户CPU: %.2f%%\n", user_sum/count
printf "平均系统CPU: %.2f%%\n", system_sum/count
printf "平均IO等待CPU: %.2f%%\n", iowait_sum/count
printf "平均空闲CPU: %.2f%%\n", idle_sum/count
}' ${LOG_FILE} | tee -a ${LOG_FILE}
echo -e "\n详细监控日志已保存至: ${LOG_FILE}"
6. 综合性能监控实战
6.1 创建综合监控系统
创建综合监控脚本:comprehensive_monitor.sh
bash
#!/bin/bash
DURATION=60
INTERVAL=5
echo "=== Linux 系统综合性能监控 ==="
echo "监控时长: ${DURATION} 秒"
echo "采样间隔: ${INTERVAL} 秒"
echo "开始时间: $(date)"
# 创建监控目录
MONITOR_DIR="/tmp/system_monitor_$(date +%Y%m%d_%H%M%S)"
mkdir -p ${MONITOR_DIR}
echo "监控数据目录: ${MONITOR_DIR}"
# 定义监控函数
start_monitoring() {
echo -e "\n启动监控进程..."
# top 监控
top -b -d ${INTERVAL} -n $((DURATION / INTERVAL)) > ${MONITOR_DIR}/top.log &
TOP_PID=$!
# vmstat 监控
vmstat -t ${INTERVAL} $((DURATION / INTERVAL)) > ${MONITOR_DIR}/vmstat.log &
VMSTAT_PID=$!
# iostat 监控
iostat -dxct ${INTERVAL} $((DURATION / INTERVAL)) > ${MONITOR_DIR}/iostat.log &
IOSTAT_PID=$!
echo "监控进程已启动:"
echo "Top PID: ${TOP_PID}"
echo "Vmstat PID: ${VMSTAT_PID}"
echo "Iostat PID: ${IOSTAT_PID}"
}
# 停止监控函数
stop_monitoring() {
echo -e "\n停止监控进程..."
kill ${TOP_PID} ${VMSTAT_PID} ${IOSTAT_PID} 2>/dev/null
wait
echo "所有监控进程已停止"
}
# 生成监控报告函数
generate_report() {
echo -e "\n=== 生成监控报告 ==="
REPORT_FILE="${MONITOR_DIR}/performance_report.txt"
{
echo "Linux 系统性能监控报告"
echo "生成时间: $(date)"
echo "监控时长: ${DURATION} 秒"
echo "=========================================="
echo -e "\n1. 系统负载分析"
echo "------------------------------------------"
grep "load average" ${MONITOR_DIR}/top.log | tail -5
echo -e "\n2. CPU 使用率分析"
echo "------------------------------------------"
awk '/%Cpu/ {us_sum+=$2; sy_sum+=$4; id_sum+=$8; count++}
END {
printf "平均用户CPU: %.2f%%\n", us_sum/count
printf "平均系统CPU: %.2f%%\n", sy_sum/count
printf "平均空闲CPU: %.2f%%\n", id_sum/count
}' ${MONITOR_DIR}/top.log
echo -e "\n3. 内存使用分析"
echo "------------------------------------------"
awk '/MiB Mem/ {total=$4; used=$8; count++}
END {
if(count>0) printf "平均内存使用率: %.2f%%\n", (used/total)*100
}' ${MONITOR_DIR}/top.log | tail -1
echo -e "\n4. 进程资源占用 TOP 5"
echo "------------------------------------------"
echo "按CPU使用率排序:"
grep -A 10 "PID USER" ${MONITOR_DIR}/top.log | head -11
echo -e "\n5. 虚拟内存统计"
echo "------------------------------------------"
awk 'NR>2 {r_sum+=$1; b_sum+=$2; swpd_sum+=$3; free_sum+=$4; count++}
END {
printf "平均运行队列: %.2f\n", r_sum/count
printf "平均阻塞进程: %.2f\n", b_sum/count
printf "平均虚拟内存: %.2f KB\n", swpd_sum/count
printf "平均空闲内存: %.2f KB\n", free_sum/count
}' ${MONITOR_DIR}/vmstat.log
echo -e "\n6. 磁盘IO分析"
echo "------------------------------------------"
# 获取主要设备名
DEVICE=$(iostat -d | awk 'NR>3 && $1 !~ /^loop/ {print $1; exit}')
if [ -n "${DEVICE}" ]; then
awk -v dev="${DEVICE}" '$1 == dev {
util_sum+=$14; rkb_sum+=$5; wkb_sum+=$6; count++
} END {
if(count>0) {
printf "设备: %s\n", dev
printf "平均利用率: %.2f%%\n", util_sum/count
printf "平均读取: %.2f KB/秒\n", rkb_sum/count
printf "平均写入: %.2f KB/秒\n", wkb_sum/count
}
}' ${MONITOR_DIR}/iostat.log
fi
} > ${REPORT_FILE}
echo "监控报告已生成: ${REPORT_FILE}"
cat ${REPORT_FILE}
}
# 执行监控
start_monitoring
# 等待监控完成
echo -e "\n监控进行中..."
sleep ${DURATION}
# 停止监控
stop_monitoring
# 生成报告
generate_report
echo -e "\n=== 监控完成 ==="
echo "所有监控数据保存在: ${MONITOR_DIR}"
6.2 性能问题诊断案例
创建性能诊断脚本:performance_diagnosis.sh
bash
#!/bin/bash
echo "=== 系统性能问题诊断 ==="
echo "诊断开始时间: $(date)"
# 创建诊断报告
REPORT_FILE="/tmp/performance_diagnosis_$(date +%Y%m%d_%H%M%S).txt"
{
echo "系统性能诊断报告"
echo "生成时间: $(date)"
echo "=========================================="
# 1. 系统基本信息
echo -e "\n1. 系统基本信息"
echo "------------------------------------------"
echo "主机名: $(hostname)"
echo "操作系统: $(cat /etc/os-release | grep PRETTY_NAME | cut -d= -f2)"
echo "内核版本: $(uname -r)"
echo "系统架构: $(uname -m)"
echo "当前时间: $(date)"
echo "运行时间: $(uptime)"
# 2. 系统负载检查
echo -e "\n2. 系统负载检查"
echo "------------------------------------------"
LOAD_AVG=$(uptime | awk -F'load average:' '{print $2}')
CPU_CORES=$(nproc)
echo "CPU核心数: ${CPU_CORES}"
echo "系统负载: ${LOAD_AVG}"
# 计算负载是否过高
LOAD_1MIN=$(echo ${LOAD_AVG} | awk -F, '{print $1}')
if (( $(echo "${LOAD_1MIN} > ${CPU_CORES}" | bc -l) )); then
echo "⚠️ 警告: 系统负载过高"
else
echo "✓ 系统负载正常"
fi
# 3. 内存使用检查
echo -e "\n3. 内存使用检查"
echo "------------------------------------------"
free -h
MEM_USAGE=$(free | awk 'NR==2{printf "%.2f", $3/$2*100}')
echo "内存使用率: ${MEM_USAGE}%"
if (( $(echo "${MEM_USAGE} > 90" | bc -l) )); then
echo "⚠️ 警告: 内存使用率过高"
else
echo "✓ 内存使用正常"
fi
# 4. 磁盘空间检查
echo -e "\n4. 磁盘空间检查"
echo "------------------------------------------"
df -h | grep -v tmpfs
# 5. 实时进程检查
echo -e "\n5. 当前资源占用最高进程"
echo "------------------------------------------"
echo "CPU占用TOP 5:"
ps aux --sort=-%cpu | head -6
echo -e "\n内存占用TOP 5:"
ps aux --sort=-%mem | head -6
# 6. 网络连接检查
echo -e "\n6. 网络连接统计"
echo "------------------------------------------"
ss -s
# 7. 当前性能快照
echo -e "\n7. 当前性能快照"
echo "------------------------------------------"
echo "Top 输出:"
top -bn1 | head -10
echo -e "\nVmstat 输出:"
vmstat 1 3
echo -e "\nIostat 输出:"
iostat -dx 1 1
} > ${REPORT_FILE}
echo "诊断报告已生成: ${REPORT_FILE}"
cat ${REPORT_FILE}
7. 监控工具使用总结
7.1 工具选择指南
根据不同的监控需求,选择合适的工具:
创建工具选择流程图:
进程资源占用]; D --> H[虚拟内存统计
进程状态跟踪]; E --> I[磁盘吞吐量
IO延迟分析]; F --> J[全面性能诊断
瓶颈定位]; G --> K[生成监控报告]; H --> K; I --> K; J --> K; style A fill:#2d5c7a,color:white style B fill:#4e7ea1,color:white style C fill:#2d5c7a,color:white style D fill:#2d5c7a,color:white style E fill:#2d5c7a,color:white style F fill:#2d5c7a,color:white style G fill:#4e7ea1,color:white style H fill:#4e7ea1,color:white style I fill:#4e7ea1,color:white style J fill:#4e7ea1,color:white style K fill:#a14e4e,color:white
7.2 常用命令速查表
创建命令速查脚本:command_cheatsheet.sh
bash
#!/bin/bash
echo "=== Linux 性能监控命令速查表 ==="
cat << 'EOF'
1. top 命令速查:
top # 交互式系统监控
top -b -n1 # 单次输出,适合脚本
top -p PID1,PID2 # 监控特定进程
top -u username # 监控特定用户进程
top -H -p PID # 显示特定进程的所有线程
2. vmstat 命令速查:
vmstat # 显示一次统计信息
vmstat 2 5 # 每2秒一次,共5次
vmstat -s # 显示详细内存统计
vmstat -d # 显示磁盘统计
vmstat -a # 显示活跃/非活跃内存
3. iostat 命令速查:
iostat # 显示CPU和设备统计
iostat -c # 只显示CPU统计
iostat -d # 只显示设备统计
iostat -x # 显示扩展统计
iostat -p sda # 显示特定设备统计
iostat -m # 以MB为单位显示
4. 常用组合命令:
# 实时监控组合
watch -n1 "iostat -dx 1 1; echo; vmstat 1 1"
# 性能问题快速检查
top -bn1 | head -20; echo; vmstat 1 3; echo; iostat -dx 1 1
# 历史性能数据分析
sar -u -r -d -p
5. 关键指标阈值:
CPU使用率: >80% 警告, >95% 严重
内存使用率: >85% 警告, >95% 严重
系统负载: >CPU核心数 警告, >2倍核心数 严重
磁盘使用率: >85% 警告, >95% 严重
IO等待: >10% 警告, >30% 严重
EOF
8. 结语
通过本文的详细讲解和实际操作示例,您应该已经掌握了 top、vmstat 和 iostat 这三个 Linux 性能监控核心工具的使用方法。这些工具是系统管理员诊断性能问题、优化系统性能的必备利器。
关键要点总结:
- top 用于实时监控系统整体状态和进程级资源占用
- vmstat 专注于虚拟内存、进程和CPU统计信息
- iostat 提供详细的磁盘IO和CPU使用情况分析
- 结合使用这三个工具可以全面诊断系统性能瓶颈
- 定期监控和建立性能基线对系统维护至关重要
建议在日常工作中多加练习这些命令,结合实际场景深入理解各项指标的含义,从而能够快速准确地定位和解决系统性能问题。