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

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

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

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

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

文章目录
隐藏
一、什么是 vmstat
二、怎样使用 vmstat 进行监控
三、更多 vmstat 使用方法
四、如何分析 vmstat 输出结果
五、搬瓦工新手优惠和教程

一、什么是 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
(最便宜)
1GB 1核 20GB 1TB 1Gbps DC3 CN2
DC8 ZNET
$49.99/年 购买
CN2 2GB 1核 40GB 2TB 1Gbps $52.99/半年
$99.99/年
购买
CN2 GIA-E
(最推荐)
1GB 2核 20GB 1TB 2.5Gbps DC6 CN2 GIA-E
DC9 CN2 GIA
日本软银 JPOS_1
荷兰 EUNL_9
$49.99/季度
$169.99/年
购买
CN2 GIA-E 2GB 3核 40GB 2TB 2.5Gbps $89.99/季度
$299.99/年
购买
HK 2GB 2核 40GB 0.5TB 1Gbps 中国香港 CN2 GIA
日本东京 CN2 GIA
$89.99/月
$899.99/年
购买
HK 4GB 4核 80GB 1TB 1Gbps $155.99/月
$1559.99/年
购买
TOKYO 2GB 2核 40GB 0.5TB 1.2Gbps 日本东京 CN2 GIA $89.99/月
$899.99/年
购买
TOKYO 4GB 4核 80GB 1TB 1.2Gbps $155.99/月
$1559.99/年
购买
搬瓦工优惠码:BWHNCXNVXV 搬瓦工购买教程:《2023 年最新搬瓦工购买教程和支付宝支付教程

选择建议:

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

搬瓦工新手教程

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

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

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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注