在Linux系统中监测系统性能是运维和开发人员的常见需求,以下是全面的方法和工具指南:
CPU监控
top
:实时动态查看CPU、内存使用情况(按1显示多核)mpstat -P ALL 1
:每核心CPU使用率统计(需sysstat包)sar -u 1 3
:历史CPU使用率采样内存监控
free -h
:查看内存/swap使用情况(-h人类可读格式)vmstat 1
:虚拟内存统计(关注si/so交换情况)磁盘I/O
iostat -x 1
:磁盘吞吐和延迟监控(%util>70%需注意)iotop
:类似top的磁盘I/O进程监控(需安装)网络监控
nload
:实时网络流量(按左右键切换网卡)ss -tulnp
:比netstat更高效的连接查看综合监控
htop
:增强版top(支持鼠标操作、树状视图)glances
:跨平台监控工具(支持API和告警)性能分析
perf top
:CPU热点函数分析(需安装linux-tools)strace -p <PID>
:跟踪进程系统调用日志工具
dmesg -T
:查看内核日志(-T显示人类可读时间)journalctl -f
:实时查看systemd日志数据收集
分布式监控
云原生方案
瓶颈识别流程:
CPU饱和 → 检查load average → 分析进程(perf)
I/O等待 → 检查await值 → 定位进程(iotop)
内存不足 → 检查OOM日志 → 优化swappiness
关键配置文件:
/proc/sys/vm/swappiness
(交换倾向)/sys/block/sda/queue/scheduler
(I/O调度器)#!/bin/bash
# 简易性能快照工具
LOG_FILE="/tmp/system_profile_$(date +%Y%m%d_%H%M).log"
{
echo "===== $(date) ====="
echo -e "\n# CPU Top10"
ps -eo pid,user,%cpu,cmd --sort=-%cpu | head -11
echo -e "\n# Memory Top10"
ps -eo pid,user,%mem,cmd --sort=-%mem | head -11
echo -e "\n# Disk Space"
df -h | grep -v tmpfs
echo -e "\n# Network Connections"
ss -s
} > $LOG_FILE
通过以上工具组合,可以构建从实时监控到历史分析的完整性能观测体系。对于生产环境,建议至少部署基础版的Prometheus监控系统,关键指标保存周期建议不低于15天。