共计 2269 个字符,预计需要花费 6 分钟才能阅读完成。
atop 是 Linux 系统下最强大的性能分析工具之一。它不仅能实时监控 CPU、内存、磁盘 I/O 和网络负载,更具备独特的“时光倒流”功能,帮助运维人员精准回溯历史故障现场。本教程将带你从零掌握 atop 的安装、配置及核心分析方法。
一、安装与基础配置
1. 安装服务
# RHEL/CentOS/Fedora
sudo dnf install atop -y
# Ubuntu/Debian
sudo apt install atop -y
2. 修改配置文件
编辑配置文件以调整日志记录策略:
sudo vim /etc/sysconfig/atop # CentOS/RHEL
# 或
sudo vim /etc/default/atop # Ubuntu/Debian
推荐配置内容:
LOGOPTS=""
LOGINTERVAL=30 # 每 30 秒记录一次快照
LOGGENERATIONS=7 # 保留 7 天日志
LOGPATH=/var/log/atop
3. 启动并设置开机自启
sudo systemctl start atop
sudo systemctl enable atop
二、核心功能操作指南
👀 1. 实时监控模式
直接输入 atop 进入实时界面(默认 10 秒刷新)。如需自定义刷新间隔,可使用 atop 5(每 5 秒刷新)。
| 快捷键 | 功能说明 | 排查用途 |
|---|---|---|
| C | 按 CPU 使用率排序 | 快速定位消耗 CPU 最多的进程 |
| m | 按内存使用率排序 | 定位内存占用过高的进程 |
| d | 按磁盘活动排序 | 排查 I/O 瓶颈,找出疯狂读写的进程 |
| n | 按网络活动排序 | 查看流量最大的进程(需安装 netatop) |
| a | 按最活跃资源自动排序 | 自动识别当前系统瓶颈并排序 |
| c | 显示完整命令行 | 看清启动进程的完整脚本或命令参数 |
| t / T | 下一个 / 上一个时间点 | 在历史记录中前后翻阅快照 |
| b | 跳转到指定时间 | 输入具体时间(如 14:30)快速定位 |
| h | 显示帮助 | 随时查阅所有快捷键和列定义 |
🕰️ 2. 历史故障回溯(核心优势)
当服务器在凌晨发生故障而当时未连接终端时,atop 的历史日志就是“黑匣子”。
# 查看当天的所有历史记录
sudo atop -r
# 查看指定日期的记录(格式:atop_YYYYMMDD)sudo atop -r /var/log/atop/atop_20260406
💡 提示:进入历史模式后,实时监控的所有快捷键(C, m, d, n 等)依然有效。建议先用 t/T/b 键定位到故障时间点,再按 C 或 d 分析当时的资源消耗大户。
三、读懂关键指标数据
atop 界面信息密集,掌握以下关键行即可快速判断系统健康状态:
- ATOP 行:显示当前快照时间,用于故障时间对齐。
- PRC 行:关注
#zombie(僵尸进程数),数量过高需排查父进程异常。 - CPU 行:重点看
wait字段。若持续 >10%,说明 CPU 大量时间在等待磁盘 I/O,磁盘是瓶颈。 - MEM 行:观察
free(空闲物理内存)是否耗尽,结合 SWP 行 的use(交换分区使用量)是否激增来判断内存压力。 - DSK 行:
busy值表示磁盘繁忙程度,高值意味着 I/O 负载过重。 - NET 行:通过
tcpi/tcpo等字段判断网络传输速率是否异常。
四、进程字段详解速查表
🔹 基础标识与状态
| 字段 | 全称 | 含义与说明 |
|---|---|---|
| PID | Process ID | 进程唯一编号,用于 kill 操作 |
| TID | Thread ID | 线程编号;单线程时 = PID;显示 - 表示未启用线程视图(按 t 切换) |
| S | Status | R= 运行中 | S= 睡眠(正常) | D= 不可中断 I /O(⚠️警惕) | Z= 僵尸 | I= 空闲 |
| PPID | Parent PID | 父进程 ID,systemd 的 PPID 为 0 |
🔹 资源占用(重点关注)
| 字段 | 全称 | 含义与说明 |
|---|---|---|
| CPU | CPU Usage % | 占总 CPU 资源百分比;多核下可能 >100%(如 200% = 占满 2 核) |
| MEM | Memory % | 占总物理内存百分比 |
| RSS | Resident Set Size | ⭐ 实际占用的物理内存,诊断内存压力的核心指标 |
| VSS | Virtual Size | 虚拟内存大小(含共享库),通常参考价值低于 RSS |
| DSK | Disk I/O | 磁盘读写速率(KB/s),持续高值可能是日志狂写或备份任务 |
🔹 I/O、网络与控制
| 字段 | 全称 | 含义与说明 |
|---|---|---|
| LWP | Light Weight Process | 该进程的线程数(= TID 数量) |
| SYSC | System Calls/sec | 每秒系统调用次数,高值可能表示频繁 I/O |
| CTXT | Context Switches/sec | 每秒上下文切换次数,>1000 可能导致 CPU 效率下降 |
| START | Start Time | 进程启动时间,便于判断是否刚重启 |
| TIME | CPU Time Used | 累计纯 CPU 运行时间 |
⚠️ 关于网络监控:默认进程列表不直接显示每进程的网络数据。需按 n 切换到网络视图,且需要额外安装 netatop 内核模块才能支持进程级网络流量监控。命令行过长时可按 ← → 方向键水平滚动查看。
五、常见故障场景应用
| 故障场景 | 操作步骤 |
|---|---|
| 服务器突然变慢 | 运行 atop → 按 C 查 CPU 大户 → 按 d 查磁盘 I/O 大户 → 按 c 确认完整命令 |
| 凌晨服务宕机 / 卡顿 | 运行 sudo atop -r /var/log/atop/atop_YYYYMMDD → 按 b 跳转至故障时间 → 用 t/T 微调 → 按 C/m/d 分析 |
| 怀疑内存泄漏 | 按 m 排序 → 持续关注 RSS 列是否单调递增 → 结合 SWP 行确认交换分区使用情况 |
| 磁盘 I/O 告警 | 查看 CPU 行 wait 和 DSK 行 busy → 按 d 排序 → 检查是否有异常日志写入或备份任务 |
六、新手入门建议
初次使用 atop 时,无需记忆所有字段。优先关注以下 4 列即可覆盖 80% 的排查需求:
- PID — 定位目标进程
- S (Status) — 判断进程是否卡死(D/Z 状态需高度警惕)
- CPU — 谁在抢占计算资源
- RSS — 谁在消耗真实物理内存
熟练后可通过按 o 自定义显示列,或按 h 查阅完整的列选择菜单,逐步构建适合自己的监控视图。
正文完