文章目录
- Linux 性能排查命令速查手册
- 一、CPU、系统负载、内存
- 1. `uptime` —— 查看系统负载
- 2. `top` —— 查看进程和系统实时状态
- 3. `vmstat` —— 查看系统综合性能
- 4. `mpstat` —— 查看各 CPU 核心状态
- 5. `free` —— 查看内存使用情况
- 6. `ps` —— 查看进程快照
- 7. `pidstat` —— 查看单个进程的资源消耗
- 二、磁盘空间与 I/O
- 8. `iostat` —— 查看磁盘 I/O 性能
- 9. `iotop` —— 找出产生磁盘 I/O 的进程
- 10. `df` 和 `du` —— 排查磁盘空间不足
- 三、网络排查
- 11. `ss` —— 查看网络连接和监听端口
- 12. `ip` —— 查看网卡与路由
- 13. `tcpdump` —— 抓包分析
- 四、历史监控与深度定位
- 14. `sar` —— 查看历史性能数据
- 15. `strace` —— 查看进程系统调用
- 16. `perf` —— 分析 CPU 性能热点
- 五、最后记住这张排障表
- 排查步骤
- Linux 运维生产故障排查与工具使用手册
- 一、生产排障总流程
- 二、故障一:服务器负载突然升高
- 排查步骤
- 三、故障二:CPU 使用率达到 100%
- 排查步骤
- 生产中重点考虑的原因
- 四、故障三:内存不足、进程被 OOM Killer 杀死
- 排查步骤
- 五、故障四:磁盘空间使用率达到 100%
- 排查步骤
- 六、故障五:磁盘 I/O 延迟高,业务响应变慢
- 排查步骤
- 七、故障六:端口正常,但业务访问失败
- 排查步骤
- 八、故障七:TCP 连接很多,连接建立或请求处理异常
- 排查步骤
- 九、故障八:进程存在,但业务没有响应
- 排查步骤
- 十、故障九:服务器网络丢包或延迟高
- 排查步骤
- 十一、故障十:故障已经恢复,但不知道刚才发生了什么
- 排查步骤
- 十二、生产环境操作前的安全检查
- 十三、建议怎样练习这本手册
- 实战学习清单
Linux 性能排查命令速查手册
一、CPU、系统负载、内存
1.uptime—— 查看系统负载
命令:
uptime| 输出指标 | 含义 | 重点判断 |
|---|---|---|
up | 系统运行时间 | 判断系统运行了多久 |
users | 当前登录用户数 | 仅作参考 |
load average | 最近 1、5、15 分钟平均负载 | 判断系统负载是否持续偏高 |
关键参数: 无常用必记参数。
注意: Load Average 不是 CPU 使用率,还包括处于不可中断睡眠状态的任务。需要结合 CPU 核数、top、vmstat判断。
2.top—— 查看进程和系统实时状态
命令:
top top -c top -o %CPU top -o %MEM关键参数:
| 参数 | 含义 |
|---|---|
-c | 显示完整命令行 |
-o %CPU | 按 CPU 使用率排序 |
-o %MEM | 按内存使用率排序 |
重点观察指标:
| 指标 | 含义 | 重点判断 |
|---|---|---|
load average | 1、5、15 分钟平均负载 | 是否持续高负载 |
%Cpu(s) us | 用户态 CPU 使用率 | 应用程序是否消耗较多 CPU |
%Cpu(s) sy | 内核态 CPU 使用率 | 系统调用、内核处理是否偏多 |
%Cpu(s) wa | CPU 等待 I/O 的时间比例 | 是否存在 I/O 等待 |
%Cpu(s) id | CPU 空闲比例 | 是否还有 CPU 余量 |
PID | 进程 ID | 定位目标进程 |
%CPU | 进程 CPU 使用率 | 找出高 CPU 进程 |
%MEM | 进程内存占比 | 找出内存占用高的进程 |
RES | 进程实际驻留物理内存 | 判断进程实际占用的物理内存规模 |
VIRT | 进程虚拟内存总量 | 不等于实际物理内存占用 |
交互快捷键:P按 CPU 排序,M按内存排序,1展开各 CPU 核心,q退出。
3.vmstat—— 查看系统综合性能
命令:
vmstat vmstat 1 5 vmstat -w 1 5关键参数:
| 参数 | 含义 |
|---|---|
1 | 每隔 1 秒采样 |
5 | 共输出 5 次采样 |
-w | 宽格式显示,减少字段挤在一起的问题 |
重点观察指标:
| 字段 | 含义 | 重点判断 |
|---|---|---|
r | 等待运行或正在运行的任务数 | 持续高于 CPU 核数时,需关注 CPU 竞争 |
b | 处于不可中断睡眠的任务数 | 持续偏高需排查 I/O 等等待 |
swpd | 已使用的交换空间 | 判断是否使用 Swap |
free | 空闲内存 | 不能单独用来判断内存是否不足 |
si | 每秒从 Swap 换入的数据量 | 持续非零需关注内存压力 |
so | 每秒换出到 Swap 的数据量 | 持续非零需关注内存压力 |
bi | 每秒从块设备读入的数据量 | 观察块设备读取活动 |
bo | 每秒写入块设备的数据量 | 观察块设备写入活动 |
in | 每秒中断次数 | 异常升高时结合设备和负载分析 |
cs | 每秒上下文切换次数 | 过高时关注线程竞争、调度开销 |
us | 用户态 CPU 时间比例 | 应用程序消耗 |
sy | 内核态 CPU 时间比例 | 内核处理开销 |
id | CPU 空闲时间比例 | CPU 空闲程度 |
wa | I/O 等待时间比例 | 结合磁盘指标排查 I/O 瓶颈 |
st | 虚拟机被宿主机抢占的 CPU 时间比例 | 虚拟化环境中关注宿主机资源竞争 |
注意:第一行通常是自系统启动以来的平均统计,后续行才是采样间隔内的数据。
4.mpstat—— 查看各 CPU 核心状态
命令:
mpstat -P ALL 1 mpstat -P 0 1 5关键参数:
| 参数 | 含义 |
|---|---|
-P ALL | 显示所有 CPU 核心 |
-P 0 | 只显示 CPU 0 |
1 | 每秒采样 |
5 | 采样 5 次 |
重点观察指标:
| 字段 | 含义 | 重点判断 |
|---|---|---|
%usr | 用户态 CPU 使用比例 | 应用程序消耗 |
%sys | 内核态 CPU 使用比例 | 内核处理开销 |
%iowait | CPU 等待 I/O 的比例 | 关注存储 I/O 是否拖慢任务 |
%idle | CPU 空闲比例 | 越低说明 CPU 越忙 |
%steal | 虚拟机被宿主机抢占的比例 | 持续偏高需关注宿主机竞争 |
如果总 CPU 使用率不高,但单个核心很忙,用mpstat -P ALL 1检查是否存在单核瓶颈。
5.free—— 查看内存使用情况
命令:
free -h free -m free -w关键参数:
| 参数 | 含义 |
|---|---|
-h | 自动选择易读单位,如 MiB、GiB |
-m | 以 MiB 显示 |
-w | 分开显示 Buffer 和 Cache(取决于版本支持) |
重点观察指标:
| 字段 | 含义 | 重点判断 |
|---|---|---|
total | 总内存 | 系统物理内存规模 |
used | 已使用内存 | 结合缓存和可用内存判断 |
free | 完全空闲的内存 | 不应单独作为内存不足的依据 |
buff/cache | 缓冲与缓存占用 | 很多情况下可按需回收 |
available | 预计无需明显交换即可供应用使用的内存 | 判断内存是否紧张的优先指标 |
Swap | 交换空间的总量、使用量和剩余量 | 结合vmstat的si/so判断是否有持续交换活动 |
6.ps—— 查看进程快照
命令:
ps aux ps aux --sort=-%cpu ps aux --sort=-%mem ps -ef关键参数:
| 参数 | 含义 |
|---|---|
aux | BSD 风格显示全部用户的进程信息 |
-ef | 显示完整进程列表及父进程信息 |
--sort=-%cpu | 按 CPU 使用率降序排列 |
--sort=-%mem | 按内存使用率降序排列 |
重点观察指标:
| 字段 | 含义 |
|---|---|
PID | 进程 ID |