【运维】Linux 服务器实战(6):进程与 CPU/内存/IO 监控
Linux 服务器实战 · 第 6 篇
CPU 飙高、内存没了、磁盘 wait 100%——用 ps + vmstat + iotop 快速定位。
1. 进程 TOP 榜
# CPU 占用前 10
ps aux --sort=-%cpu | head -11
# 内存占用前 10
ps aux --sort=-%mem | head -11
# 按名查找
pgrep -a nginx
pgrep -a python
ps -ef | grep gunicorn | grep -v grep
交互式:
```bash
htop # 无则 apt install htop
top -c
---
## 2. vmstat:系统级快照
```bash
vmstat 1 5
vmstat 1 3 -S M -w
| 列 | 含义 | 告警直觉 |
|----|------|----------|
| r | 运行队列 | 长期 > CPU 核数 → CPU 瓶颈 |
| b | 不可中断睡眠 | 高 → 可能 IO 等 |
| swpd / si / so | swap 使用与换入换出 | si/so 持续 >0 → 内存不够 |
| bi / bo | 块 IO | 持续高 → 磁盘忙 |
| us / sy / id / wa | 用户/内核/空闲/等 IO | wa 高 → IO 瓶颈 |
| cs | 上下文切换 | 过高 → 线程过多或 syscall 频繁 |
---
## 3. 磁盘 IO
```bash
sudo apt install -y sysstat iotop
iostat -xz 1 3
sudo iotop -oPa
记录超 1MB/s 的进程(cron 示例):
```bash
sudo iotop -bo -n 2 | grep 'M/s' >> /var/log/disk-io.log
---
## 4. 内存详解
```bash
free -h
Linux `available` 含可回收 cache,**不要只看 free 列**。
---
## 5. 按场景排查
### CPU 高
```bash
ps aux --sort=-%cpu | head
sudo perf top # 可选,需 linux-tools
sudo journalctl -u SUSPECT -n 50 --no-pager
### 内存 / OOM
```bash
free -h
dmesg -T | grep -i 'out of memory'
sudo journalctl -k | grep -i oom
### 负载高但 CPU 不高
→ 看 `iostat`、`iotop`(IO wait)或 `dmesg`(磁盘错误)。
---
## 6. 按端口杀进程(再次提醒)
```bash
sudo lsof -t -i:8000 -sTCP:LISTEN | xargs -r sudo kill
# 强制:kill -9(最后手段)
---
## 本篇速查
```bash
ps aux --sort=-%mem | head
vmstat 1 5
sudo iotop -oPa
dmesg -T | grep -i oom
```
系列导航
| 篇 | 主题 |
|---|---|
| 1–5 | 见前篇 |
| 6 | 性能监控(本文) |
| 7 | 故障诊断 |
| 8 | 部署与 Cron |