计算机毕业设计:Python二手车可视化平台 Django框架 可视化 线性回归 数据分析 机器学习 深度学习 AI 大模型(建议收藏)✅
2026/4/5 20:21:33
本文系统介绍Linux性能监控工具,从CPU、内存、磁盘到网络,一站式掌握系统状态观测。
服务器卡了,怎么排查?
Linux下有大量性能监控工具,但很多人只会用top。今天把这些工具一网打尽,建立完整的性能观测知识体系。
┌─────────────────────────────────────┐ │ 应用层 │ │ strace, ltrace, perf │ └─────────────────────────────────────┘ ↓ ┌─────────────┬─────────────┬─────────────┬─────────────┐ │ CPU │ 内存 │ 磁盘 │ 网络 │ ├─────────────┼─────────────┼─────────────┼─────────────┤ │ top/htop │ free │ df/du │ ifconfig │ │ mpstat │ vmstat │ iostat │ netstat │ │ pidstat │ /proc/meminfo│ iotop │ ss │ │ uptime │ slabtop │ lsblk │ iftop │ │ sar │ pmap │ hdparm │ nethogs │ └─────────────┴─────────────┴─────────────┴─────────────┘ ↓ ┌─────────────────────────────────────┐ │ 综合工具 │ │ glances, nmon, dstat, atop │ └─────────────────────────────────────┘top# 输出说明:# load average: 1分钟、5分钟、15分钟平均负载# %Cpu(s): us用户态, sy内核态, id空闲, wa等待IO# 进程列表:PID, USER, %CPU, %MEM, COMMAND常用操作:
1:显示每个CPU核心M:按内存排序P:按CPU排序k:杀死进程q:退出# 安装aptinstallhtop# Debian/Ubuntuyuminstallhtop# CentOShtop# 优点:# - 彩色显示# - 鼠标支持# - 直观的CPU/内存条# - 树形进程视图常用操作:
F2:设置F3:搜索进程F4:过滤F5:树形视图F9:杀死进程# 每秒显示一次,共5次mpstat15# 显示每个CPU核心mpstat -P ALL1# 输出说明:# %usr: 用户态# %sys: 内核态# %iowait: IO等待# %idle: 空闲uptime# 输出:10:30:01 up 5 days, 2:30, 2 users, load average: 0.52, 0.58, 0.59# load average说明:# 1分钟、5分钟、15分钟平均负载# 单核CPU:负载1.0表示满载# 多核CPU:负载等于核心数表示满载free-h# 输出:# total used free shared buff/cache available# Mem: 15Gi 5.2Gi 1.2Gi 512Mi 8.8Gi 9.5Gi# Swap: 2.0Gi 256Mi 1.8Gi# 关键指标:# available:实际可用内存(比free更准确)# buff/cache:可回收的缓存# 每秒显示一次vmstat1# 输出说明:# r: 运行队列长度# b: 不可中断睡眠进程数# swpd: 使用的swap# free: 空闲内存# buff/cache: 缓冲/缓存# si/so: swap换入/换出# bi/bo: 块设备读/写# us/sy/id/wa: CPU使用率# 查看进程内存使用详情pmap -x<pid># 显示:# 地址、大小、RSS、脏页、映射的文件df-h# 输出:# Filesystem Size Used Avail Use% Mounted on# /dev/sda1 100G 60G 40G 60% /# 查看inodedf-i# 查看目录大小du-sh /var/log# 查看子目录大小并排序du-sh /*2>/dev/null|sort-rh|head-10# 查看指定深度du-h --max-depth=1/var# 每秒显示一次iostat -x1# 关键指标:# %util: 设备繁忙程度(>70%需关注)# await: 平均IO等待时间(毫秒)# r/s, w/s: 每秒读写次数# rMB/s, wMB/s: 每秒读写MB# 安装aptinstalliotop# 运行(需要root)sudoiotop# 常用选项iotop -o# 只显示有IO的进程iotop -a# 累计IO# 查看TCP连接netstat-ant ss -ant# 查看监听端口netstat-tlnp ss -tlnp# 统计连接状态ss -s# 查看端口占用ss -tlnp|grep:80# 安装aptinstalliftop# 运行(需要root)sudoiftop# 指定网卡sudoiftop -i eth0# 安装aptinstallnethogs# 运行sudonethogs# 查看哪个进程在占用带宽sudonethogs eth0# 安装aptinstallnload# 运行nload# 显示入站/出站流量曲线图# 安装pipinstallglances# 运行glances# Web模式glances -w# 访问 http://localhost:61208特点:
# 安装aptinstallnmon# 运行nmon# 按字母键切换显示:# c: CPU# m: 内存# d: 磁盘# n: 网络# 安装aptinstalldstat# 运行dstat# 显示所有信息dstat -cdngy# 输出到CSVdstat --output stats.csv160# 安装aptinstallatop# 运行atop# 特点:# - 记录历史数据# - 显示磁盘IO# - 进程级别详细信息# CPU使用pidstat1# 内存使用pidstat -r1# IO统计pidstat -d1# 指定进程pidstat -p<pid>1# 追踪进程系统调用strace-p<pid># 追踪新进程stracels-la# 统计系统调用strace-cls-la# 查看进程打开的文件lsof-p<pid># 查看端口占用lsof-i :80# 查看用户打开的文件lsof-u username如果服务器在远程,可以通过SSH访问这些工具:
# 直接SSH连接sshuser@serverhtop如果服务器在家里,没有公网IP,可以用组网软件(如星空组网)连接后再SSH:
# 组网后通过虚拟IP访问sshuser@10.10.0.1对于多台服务器,建议使用专业监控系统:
# 安装node_exporter采集数据wgethttps://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gztarxf node_exporter*.tar.gz ./node_exporterPrometheus配置采集,Grafana展示图表。
# 1. 确认CPU使用率top# 2. 找到占用CPU的进程psaux --sort=-%cpu|head# 3. 分析进程strace-p<pid>pidstat -p<pid>1# 1. 查看内存使用free-h# 2. 找到占用内存的进程psaux --sort=-%mem|head# 3. 查看进程详细内存pmap -x<pid># 1. 确认IO情况iostat -x1# 2. 找到IO高的进程iotop -o# 3. 分析进程IOpidstat -d -p<pid>1# 1. 查看网络连接ss -ant# 2. 查看流量iftop nethogs# 3. 抓包分析tcpdump -i eth0 port80| 场景 | 工具 | 命令 |
|---|---|---|
| 整体概览 | htop/glances | htop |
| CPU使用 | mpstat | mpstat 1 |
| 内存使用 | free | free -h |
| 磁盘空间 | df | df -h |
| 磁盘IO | iostat | iostat -x 1 |
| 网络连接 | ss | ss -ant |
| 网络流量 | iftop | sudo iftop |
| 进程流量 | nethogs | sudo nethogs |
| 进程IO | iotop | sudo iotop |
| 系统调用 | strace | strace -p <pid> |
Linux性能监控工具选择:
htop(比top更直观)glances(一屏看所有)mpstat、pidstatfree、vmstatiostat、iotopss、iftop、nethogsstrace、perf建议:先用综合工具(htop/glances)定位问题方向,再用专项工具深入分析。
💡建议:把这些命令存到服务器上的备忘文件里,排查问题时可以快速翻阅。