帮助

监控负载和进程:top、htop、atop

服务器上的每个活动进程都会产生负载,当服务器资源耗尽时,可能会引发各种问题,例如网站运行缓慢或脚本执行延迟。

有几款专用工具可用于分析服务器负载。我们将介绍其中三款:

  • top
  • htop
  • atop

总的来说,它们彼此非常相似。htop 工具提供交互式界面,使用起来可能更方便。而 Top 则预装在 Linux 发行版中,无需单独安装。Atop 能够记录日志。

如果您的网站运行缓慢,还建议使用 Google 的 PageSpeed Insights 服务。该工具会分析页面加载速度,并提供网站优化建议。此外,还可以通过将 MySQL 临时文件目录移动到 tmpfs 来提升网站性能。

top

大多数 UNIX 系统都默认安装了 top 工具,您可以通过 SSH 连接到服务器并执行 top 命令来运行它。

top 的输出如下所示:

监控负载和进程:top、htop、atop

输出的上半部分显示系统信息,下方是进程列表。输出每 2 秒刷新一次,占用资源最多的进程会排在列表最上方。

系统信息

输出的左上角显示当前系统时间,接着是以下数据:

Up — 自上次系统重启以来经过的时间。

User — 当前用户数。

Load average — 服务器平均负载,显示最近一分钟、五分钟和十五分钟的数值。

Tasks — 处于各种状态的进程总数,例如 running(运行中)、sleeping(休眠)、stopped(已停止)和 zombie(僵尸),即等待父进程结束的子进程。

Cpu(s) — 执行进程所占用的 CPU 时间百分比,分为以下几类:

us — 用户进程(数值过高可能表明网站代码存在需要优化的问题)。

sy — 系统进程。

id — 空闲资源(该值越高越好)。

wa — 输入/输出操作,即磁盘操作。

Mem、Swap — 内存使用信息,包括 total(总量)、free(空闲量)和 used(已用量)。

进程信息

默认情况下,进程以表格形式显示,并按 CPU 使用率从高到低排序。

各列说明如下:

PID — 进程 ID;

USER — 启动该进程的用户;

PR — 进程优先级;

NI — 调整后的优先级(由用户通过 nice 命令设置);

VIRT — 虚拟内存大小(进程申请的内存量,即使实际使用的更少);

RES — 进程使用的物理内存大小(如果进程申请了 50 MB 内存,但只使用了 10 MB,则显示 10 MB);

SHR — 与其他进程共享的内存大小(即其他进程也可以使用的内存);

S — 进程状态(running — 运行中;sleeping — 休眠;zombie — 僵尸进程);

%CPU — CPU 时间使用百分比;

%MEM — 内存使用百分比;

TIME — 进程总运行时间;

COMMAND — 进程名称(启动该进程的命令)。

操作

使用 top 工具时可以使用以下按键:

空格键 — 刷新输出

M — 按内存使用排序

P — 按 CPU 负载排序(默认)

T — 按进程运行时间排序

A — 按各类资源的最大占用排序

u — 按用户名排序(需要输入用户名)

k — 结束进程(需要指定进程 ID,即 PID)

n — 更改输出中显示的进程数(需要指定所需数量)

c — 显示运行中进程的完整路径(COMMAND 列)

h — 显示帮助

q — 退出程序

htop

与 top 工具不同,htop 需要先在服务器上安装:

Ubuntu / Debian:

apt-get install htop

CentOS:

yum install htop

安装完成后运行:

htop

命令输出如下:

监控负载和进程:top、htop、atop

与 top 一样,上半部分显示系统信息,下方是进程列表。htop 中各列的含义与 top 相同(见上文说明)。

在左上方,您可以看到每个 CPU 核心的负载、内存使用量、进程数、最近 1、5 和 15 分钟的平均负载 (load average) 以及系统运行时间 (uptime)。

默认情况下,进程按 CPU 使用率从高到低排序。

要按内存使用量(或其他参数)排序,只需点击相应列的名称,例如 MEM。再次点击同一列即可反向排序(从低到高)。此外,您也可以像在 top 中一样使用 M(按内存排序)、P(按 CPU 排序)、T(按时间排序)键。

其他功能包括:

空格键 — 标记进程(可以标记多个进程,以便对它们执行批量操作,例如结束进程)。

u — 仅显示特定用户的进程。

可以使用 F1 – F10 键进行操作:

F1 — 显示帮助。

F2 — 显示设置(添加或删除列、在顶部显示附加信息及其他参数)。

F3 — 搜索进程。

F4 — 过滤进程(仅显示名称中包含特定文本的进程)。

F5 — 显示进程树(展示父进程与子进程之间的关系)。

F6 — 更改排序方式。

F7 / F8 — 提高或降低进程优先级。

F9 — 结束进程(与 top 不同,无需指定 PID — 只需选中进程并按 F9;按 Enter 确认结束,按 Esc 取消)。

F10 — 退出程序。

各按键的功能可能会因您所在的程序菜单而有所不同。可用的操作会显示在窗口底部,方便您使用该工具。

atop

atop 工具的主要特点是能够记录日志。这样不仅可以监控当前负载,还可以查看前几天进程的运行情况,有助于发现难以实时捕捉的间歇性错误。

使用该工具前,需要先在服务器上安装:

Ubuntu / Debian:

apt-get install atop -y

CentOS:

yum install atop -y

还建议将 atop 添加到开机自启动:

Ubuntu / Debian / CentOS 7:

systemctl enable atop

CentOS 6:

chkconfig atop on

Ubuntu 14.04:

rm /etc/init/atop.override

运行该工具:

atop

输出大致如下:

监控负载和进程:top、htop、atop

屏幕上半部分显示系统信息以及关键组件(CPU、核心、内存、网络)的负载情况。下方是进程列表。

可以使用以下按键控制输出:

m — 按内存使用排序

d — 按磁盘负载排序

u — 按用户显示负载

v — 显示进程详细信息

i — 更改数据刷新间隔(默认 10 秒)

g — 恢复默认输出

n — 按网络负载排序进程(需安装内核补丁)

与 Shift 组合的按键可以按相应参数对当前进程列表进行排序:

  • Shift + m — 按内存使用排序
  • Shift + c — 按 CPU 占用排序(默认)
  • Shift + d — 按磁盘使用排序
  • Shift + n — 按网络使用排序

atop 日志

默认情况下,atop 每 10 分钟记录一次系统状态信息,并将其保存到 /var/log/atop 目录下的日志文件中。

查看当天的日志:

atop -r

常用按键:

  • t — 按时间向前移动
  • Shift + t — 按时间向后移动

某一天的日志文件名为 atop_YYYYMMDD。要查看特定日期的日志,请使用 atop -r 命令并指定文件路径,例如:

atop -r /var/log/atop/atop_20200227

要更改日志记录设置,请编辑 atop 配置文件,其路径为 /etc/default/atop 或 /etc/sysconfig/atop(CentOS)。

# 服务器负载快照的记录间隔(秒):
INTERVAL=600

# 日志目录路径:
LOGPATH="/var/log/atop"

# 日志文件名
OUTFILE="$LOGPATH/daily.log"

例如,要将负载快照的记录间隔改为一分钟,请将间隔设为 60。

修改完成后,重启 atop:

systemctl restart atop.service

如有任何疑问,请联系我们