使用 vmstat 监控 Linux VPS 系统性能详解

今天介绍一下 vmstat 这个工具,因为比较常见,且统计信息比较详细。vmstat 是 Virtual Meomory Statistics(虚拟内存统计)的缩写,可实时动态监视操作系统的虚拟内存、进程、CPU活动。vmstat 可以指定采样间隔,以允许近实时地观察系统活动。vmstat 工具可在大多数 Unix 和类 Unix 操作系统上使用,例如 FreeBSD,Linux 或 Solaris。

前几天在做某家公司笔试的时候也考到了这个命令,所以今天又再次看到就顺便记录一下。

相关教程:《使用 Sysstat 系统性能工具监控搬瓦工的 CPU、内存、硬盘等使用情况》。

一、什么是 vmstat

vmstat 是一个内置的 Linux 系统监控工具,它的主要工作是测量系统对虚拟内存的使用。Linux 服务器都有有限数量的随机存取存储器(RAM,也就是内存)。Linux 系统可能出于多种原因耗尽内存,例如对操作系统及其运行的应用程序的需求。发生这种情况时,Linux 内核会将程序交换或分页到计算机的存储设备,称为交换空间(SWAP)。通常,这是硬盘驱动器或固态驱动器存储的保留区域。当 RAM 不可避免时,它被用作虚拟内存。随着 RAM 被释放,换出的数据或代码被交换回基于 RAM 的主存储器。

使用虚拟内存时系统性能急剧下降,这是因为即使硬件(例如快速 SSD)用于虚拟内存,服务器的交换 I/O 速度也比 RAM 慢得多。此外,当 Linux 使用虚拟内存时,它会花费更多的 CPU 周期来管理虚拟内存交换。

这意味着 Linux 系统管理员必须关注服务器的内存使用情况。没有人希望系统变慢。当它发生并且管理员需要进行故障排除时,虚拟内存可能是罪魁祸首。由于虚拟内存对系统性能有很大影响,因此 vmstat 对其进行监控必不可少。除了监控虚拟内存分页,vmstat 还测量进程、I/O、CPU 和磁盘调度。

二、怎样使用 vmstat 进行监控

我们既可以将 vmstat 作为交互式程序运行,也可以在 shell 程序中运行。当不带任何参数运行 vmstat 时,它会显示自服务器上次重新启动以来每个元素的平均值,而不是当前值的快照。

使用以下命令运行 vmstat

vmstat

可以看到类似输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 1171312  69752 2231152    0    0     0    13   10   23  0  0 100  0  0

请注意 vmstat 如何返回有关系统进程、内存、交换、输入和输出、系统中断和上下文切换以及 CPU 的信息。要了解有关每个列和值的更多信息,可以使用 man vmstat 命令来查看 vmstat 的手册页。

vmstat 命令行选项提供有关系统的更多信息。vmstat 语法如下:

vmstat [-V] [-n] [delay [count]]

字段说明:

  • -V 表示打印出版本信息;
  • -n 表示在周期性循环输出时,输出的头部信息仅显示一次;
  • delay 是两次输出之间的延迟时间;
  • count 是指按照这个时间间隔统计的次数。

例如,可以使用以下命令,在空闲系统上每 5 秒运行 5 次 vmstat

vmstat 5 5

输出结果类似如下:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 1166396  70768 2233228    0    0     0    13   10   24  0  0 100  0  0
 0  0      0 1165568  70776 2233352    0    0     0     8  121  224  0  0 99  0  0
 0  0      0 1166608  70784 2233352    0    0     0    53  108  209  0  0 100  0  0
 0  0      0 1166608  70784 2233352    0    0     0     0   75  176  0  0 100  0  0
 0  0      0 1166576  70788 2233352    0    0     0     4   76  177  0  0 100  0  0

三、更多 vmstat 使用方法

vmstat 通常以 1 秒的间隔运行一小段时间,具体取决于管理员尝试诊断的问题类型。以下示例说明 1 秒 20 次的间隔:

vmstat 1 20

类似输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0  0   3996 168488  57100 1368636    0    0     1     2    0    0  3  1 97  0
0  0   3996 168604  57100 1368728    0    0     0     0  144  303  1  0 100  0
0  0   3996 168604  57100 1368984    0    0   256     0  162  464  1  0 99  0
0  0   3996 168604  57100 1368972    0    0     0     0  239  638  3  0 97  0
0  0   3996 168604  57100 1368952    0    0     0     0  242  529  1  1 99  0
0  0   3996 168604  57100 1368952    0    0     0     0  148  430  1  0 99  0
1  0   3996 168604  57100 1368952    0    0     0     0  222  451  6  0 94  0
0  0   3996 168604  57100 1368952    0    0     0     0  141  270  2  0 98  0
0  0   3996 168604  57100 1368952    0    0     0     0  166  450  1  0 99  0
0  0   3996 168604  57100 1368952    0    0     0     0  133  410  0  0 99  0
0  0   3996 168604  57100 1368952    0    0     0     0  196  398  0  0 99  0
0  0   3996 168604  57100 1368952    0    0     0     0  187  510  1  0 100  0
0  0   3996 168604  57108 1368952    0    0     0    16  263  677  2  0 97  1
0  0   3996 168604  57108 1368952    0    0     0     0  205  431  1  0 98  0
0  0   3996 168604  57108 1368964    0    0     0     0  179  467  1  0 98  0
0  0   3996 168604  57108 1368964    0    0     0     0  169  446  2  0 98  0
0  0   3996 168604  57108 1368964    0    0     0     0  202  365  2  0 98  0
0  0   3996 168604  57108 1369208    0    0   256     0  226  458  2  1 96  0
0  0   3996 168604  57108 1369208    0    0     0    40  202  501  2  0 98  0
0  0   3996 168604  57108 1369220    0    0     0     0  154  295  2  0 98  0

如果想要实时报告系统状态,可以不带 [count] 参数运行 vmstat。在这些情况下,可能需要 30 秒或更长时间的间隔。

vmstat 30

输出结果:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0  0   3996 167868  57108 1369788    0    0     1     2    0    0  3  1 97  0
0  0   3996 167860  57108 1369920    0    0     0     0  274  604  2  0 98  0
0  0   3996 167860  57108 1369928    0    0     0     0  196  481  1  0 98  0
0  0   3996 167860  57116 1369908    0    0     0    12  164  414  1  1 97  1
0  0   3996 167860  57116 1369892    0    0     0     0  168  320  0  0 100  0
0  0   3996 167860  57116 1369884    0    0     0     0  142  398  1  0 99  0
0  0   3996 167860  57116 1369880    0    0     0     0  175  450  1  1 98  0

可以选择将此输出定向到用于记录的文件,而不是让它在后台终端会话中无休止地运行。要停止 vmstat 进程,可以使用中断字符(^C 或 Control+C)。

在默认操作中,vmstat 以千字节为单位显示内存统计信息。vmstat 认为一个千字节等于 1024 字节。 要生成 1 KB 等于 1000 字节的 vmstat 报告,请使用以下格式:

vmstat -S k 1 10

类似输出如下:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0  0   4091 150192  58982 1422041    0    0     1     2    0    0  3  1 97  0
0  0   4091 150183  58982 1422381    0    0   256     0  201  518  1  0 99  0
2  0   4091 150183  58982 1422356    0    0     0     0  638 1356  7  1 92  0
0  0   4091 150183  58982 1422360    0    0     0     0  859 1087  5  2 93  0
0  0   4091 150183  58982 1422331    0    0     0     0  404 1100  2  0 97  0
0  0   4091 150183  58982 1422331    0    0     0     0  281  601  2  0 97  0
0  0   4091 150183  58982 1422327    0    0     0     0  279  468  3  0 97  0
0  0   4091 150183  58982 1422331    0    0     0     0  250  572  3  0 97  0
0  0   4091 150183  58990 1422323    0    0     0    16  280  598  4  0 95  1
0  0   4091 150183  58998 1422319    0    0     0    52  270  451  3  0 96  1

vmstat 还可以显示以兆字节为单位报告的内存大小的报告。带有参数 -S mvmstat 报告将考虑等于 1000 KB 的单个兆字节,如下所示:

vmstat -S m 1 10

类似输出:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
0  0      4    169 58   1404    0    0 1     2    0    0  3  1 97  0
0  0      4    169 58   1405    0    0 0     0  194  508  1  0 98  0
0  0      4    169 58   1405    0    0 0     0  154  443  0  0 99  0
0  0      4    169 58   1405    0    0 0     0  192  380  0  0 100  0
0  0      4    169 58   1405    0    0 0     0  287  766  3  0 97  0
1  0      4    169 58   1405    0    0 0     0  222  583  1  1 99  0
0  0      4    169 58   1405    0    0 0    36  166  304  1  0 99  0
0  0      4    169 58   1405    0    0 0     0  189  473  1  0 99  0
0  0      4    169 58   1405    0    0 0     0  164  430  1  0 99  0
0  0      4    169 58   1405    0    0 0     0  186  343  0  0 100  0

vmstat 还能够显示兆字节,使用参数 -S M 即可,单个兆字节等于 1024 千字节。请考虑以下示例:

vmstat -S M 1 10

四、如何分析 vmstat 输出结果

最后介绍一下如何查看分析 vmstat 的输出结果。

vmstat 报告描述了 Linux 系统的当前状态,vmstat 的输出显示在多个列中,以下部分简要概述了每列中报告的数据。

Procs(进程)

  • r: 运行队列中进程数量
  • b: 等待IO的进程数量

Memory(内存)

  • swpd: 使用虚拟内存大小
  • free: 可用内存大小
  • buff: 用作缓冲的内存大小
  • cache: 用作缓存的内存大小

Swap

  • si: 每秒从交换区写到内存的大小
  • so: 每秒写入交换区的内存大小

IO(现在的Linux版本块的大小为1024bytes)

  • bi: 每秒读取的块数
  • bo: 每秒写入的块数

system

  • in: 每秒中断数,包括时钟中断
  • cs: 每秒上下文切换数

CPU(以百分比表示)

  • us: 用户进程执行时间(user time)
  • sy: 系统进程执行时间(system time)
  • id: 空闲时间(包括IO等待时间)
  • wa: 等待IO时间

五、搬瓦工新手优惠和教程

搬瓦工推荐方案

搬瓦工实时库存:https://stock.bwg.net

温馨提醒 如果您有选择困难症,直接选中间的 CN2 GIA-E方案,季付 $49.99,多达 12 个机房任意切换
方案内存CPU硬盘流量/月带宽机房价格购买
CN2
(最便宜)
1GB1核20GB1TB1GbpsDC3 CN2
DC8 ZNET
$49.99/年购买
CN22GB1核40GB2TB1Gbps$52.99/半年
$99.99/年
购买
CN2 GIA-E
(最推荐)
1GB2核20GB1TB2.5GbpsDC6 CN2 GIA-E
DC9 CN2 GIA
日本软银 JPOS_1
荷兰 EUNL_9 暂时下架
$49.99/季度
$169.99/年
购买
CN2 GIA-E2GB3核40GB2TB2.5Gbps$89.99/季度
$299.99/年
购买
HK2GB2核40GB0.5TB1Gbps中国香港 CN2 GIA$89.99/月
$899.99/年
购买
HK4GB4核80GB1TB1Gbps$155.99/月
$1559.99/年
购买
TOKYO2GB2核40GB0.5TB1.2Gbps日本东京 CN2 GIA$89.99/月
$899.99/年
购买
TOKYO4GB4核80GB1TB1.2Gbps$155.99/月
$1559.99/年
购买
搬瓦工优惠码:BWH3HYATVBJW搬瓦工购买教程:《2021 年最新搬瓦工购买教程和支付宝支付教程

选择建议:

  • 入门:洛杉矶 CN2 套餐,目前最便宜,可选 CN2 GT 机房,入门之选。
  • 推荐:洛杉矶 CN2 GIA-E 套餐,速度超快,可选机房多(DC6、DC9、日本软银、荷兰联通等),性价比最高。
  • 高端:香港 CN2 GIA 套餐,价格较高,但是无可挑剔。

搬瓦工新手教程

  1. 搬瓦工新手入门:《搬瓦工新手入门完全指南:方案推荐、机房选择、优惠码和购买教程(推荐阅读)
  2. 搬瓦工购买教程:《2021 年最新搬瓦工购买教程和支付宝支付教程
  3. 搬瓦工优惠码:BWH3HYATVBJW
  4. 搬瓦工补货通知:《欢迎订阅搬瓦工补货通知(补货提醒)/ 加入搬瓦工交流群
  5. 搬瓦工方案推荐:《搬瓦工高性价比 VPS 推荐:目前哪款方案最值得买?

未经允许不得转载:Bandwagonhost中文网 » 使用 vmstat 监控 Linux VPS 系统性能详解