0

0

Linux vmstat 排查系统性能瓶颈

冷炫風刃

冷炫風刃

发布时间:2026-03-10 11:51:04

|

600人浏览过

|

来源于php中文网

原创

vmstat 是 linux 下轻量、实时、全貌式系统性能观测工具,专注 cpu、内存、i/o 三类瓶颈诊断,无需安装,输出简洁,适合紧急排查;关键字段包括 r(运行队列)、b(不可中断进程)、swpd/si/so(swap 使用)、free(空闲内存)、bi/bo(块 i/o)、us/sy/id/wa/st(cpu 时间占比),需跳过首行均值、观察趋势、结合 pidstat/iostat/free 等命令交叉验证。

linux vmstat 排查系统性能瓶颈

vmstat 是 Linux 下轻量、实时、全貌式的系统性能观测工具,擅长快速定位 CPU、内存、I/O 三类核心瓶颈。它不依赖额外安装,输出简洁,适合在资源紧张或远程终端中第一时间判断问题方向。

看懂 vmstat 关键字段含义

执行 vmstat 1(每秒刷新)后,重点关注以下几列:

  • r:运行队列长度(正在 CPU 上运行 + 等待 CPU 的进程数)。持续 > CPU 核心数,说明 CPU 调度压力大;
  • b:不可中断睡眠进程数(通常为等待磁盘 I/O)。值长期 > 0,提示可能存在 I/O 卡顿;
  • swpd:已使用的 swap 空间(KB)。非零且持续增长,说明物理内存不足,内核开始换出页;
  • free:空闲内存(KB)。单独看意义有限,需结合 buffcachesi/so 综合判断;
  • si/so:每秒从磁盘换入(swap in)/换出(swap out)的内存(KB)。si > 0 且持续不为零,是内存严重不足的明确信号;
  • bi/bo:每秒块设备读(block in)/写(block out)数量(块/秒)。bo 高不一定异常,但若伴随高 wa 和低 us/sy,可能 I/O 等待拖慢整体响应;
  • us/sy/id/wa/st:CPU 时间占比。wa > 20% 且 id 较低,强烈提示 I/O 瓶颈;us 长期接近 100%,说明用户态程序占满 CPU;sy 过高(如 > 30%)可能因频繁系统调用或上下文切换剧烈。

按现象反推瓶颈类型

根据常见症状,对照 vmstat 输出快速归因:

Beautiful.ai
Beautiful.ai

AI在线创建幻灯片

下载
  • 系统明显卡顿、命令响应慢 → 先看 rwa:r 高 + id 低 → CPU 瓶颈;wa 高 + bi/bo 同步活跃 → 磁盘 I/O 瓶颈;
  • 服务启动失败或 OOM Killer 触发 → 检查 swpdsiso:si/so 持续非零 → 内存不足;free 极低但 cache 很高 → 可能只是缓存未回收,未必真缺内存;
  • top 显示大量进程 D 状态(uninterruptible sleep)→ 对应 vmstat 中 b 值升高,基本锁定为底层存储延迟(如坏盘、NFS 挂载异常、LVM 同步卡住);
  • CPU 使用率不高但负载高(load average 远高于 CPU 核数)→ r 值持续大于核数,而 us/sy/wa 都不高 → 多为锁竞争、网络等待或某些内核路径阻塞,需进一步用 pidstat -wperf 深挖。

配合其他命令交叉验证

vmstat 提供宏观趋势,但不能定位具体进程或设备。需搭配使用:

  • 确认 CPU 瓶颈 → 接着跑 pidstat -u 1 找高 %CPU 进程,或 mpstat -P ALL 1 看各核负载是否均衡;
  • 确认 I/O 瓶颈 → 用 iostat -x 1 查看 %util、await、svctm,判断是设备饱和还是响应延迟;再用 iotop 定位读写大户;
  • 确认内存压力 → free -h 看总体使用,cat /proc/meminfo | grep -E "MemAvailable|SwapCached" 判断可用内存和 swap 缓存状态;slabtop 排查内核内存泄漏;
  • 排查 D 状态进程 → ps aux | awk '$8 ~ /D/ {print $0}',再结合 /proc/<pid>/stack</pid> 看内核栈,常暴露存储驱动或 NFS 问题。

实用技巧与避坑提醒

避免误读 vmstat,注意这些细节:

  • 第一行输出是系统启动以来的平均值,无参考价值,直接跳过,从第二行开始观察;
  • 采样间隔不宜过短(如 0.1s),否则自身开销干扰结果;生产环境建议 1–5 秒;
  • 不要只盯单次数值,要观察连续 10–20 行的趋势变化(例如 si 从 0 突增至 2000 并维持,比某次瞬时 500 更具诊断意义);
  • 容器环境中,vmstat 显示的是宿主机视图,无法反映单个容器资源限制情况,需结合 docker stats 或 cgroup 数据;
  • 某些云盘(如 AWS EBS gp3、阿里云 ESSD)存在 IOPS/吞吐配额,vmstat 看似正常(wa 不高),但 iostat 显示 await 异常升高,此时需查云平台监控配额使用率。

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

18

2026.02.03

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

440

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

601

2023.08.10

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

280

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

516

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

416

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

454

2024.04.08

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

24

2026.03.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 10.4万人学习

Git 教程
Git 教程

共21课时 | 4.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号