如何查看服务器的IO性能?

这里为您整理从简单到深入的各种方法,并解释关键指标的含义。

一、 核心命令行工具(实时监控)

怎么查看服务器的io

这些工具通常需要预先安装(如sysstat 包提供了iostatpidstat 等),适用于大多数 Linux 发行版。

1.iostat - 最常用的磁盘 I/O 统计工具

安装: (如果未安装)

For Ubuntu/Debian
sudo apt-get install sysstat
For CentOS/RHEL/Fedora
sudo yum install sysstat    # 或 sudo dnf install sysstat

使用:

间隔2秒刷新显示一次,共显示5次
iostat -dx 2 5

-d 显示设备(磁盘)使用状态。

怎么查看服务器的io

-x 显示扩展的详细信息(这是关键)。

2 5 每2秒刷新一次,总共刷新5次后退出,如果只想要持续实时刷新,使用iostat -dx 2

关键指标解读:

Device: 磁盘设备名(如sda,vda,nvme0n1)。

r/s,w/s: 每秒的读/写请求数量(合并后的)。

怎么查看服务器的io

rkB/s,wkB/s: 每秒读/写的数据量(以KB为单位)。

await (非常重要): 平均每次 I/O 操作的等待时间(毫秒)。包括队列等待时间和服务时间,如果这个值很高(超过 10ms 对于 SSD 或 几十ms 对于机械硬盘),通常表示磁盘设备饱和或有瓶颈。

%util (非常重要): 磁盘处理 I/O 的时间百分比。表示设备的繁忙程度,如果持续接近 100%,说明磁盘 I/O 已经饱和。

svctm: 平均每次 I/O 操作的服务时间(毫秒),这个指标未来可能会被移除,通常参考await 更有意义。

aqu-sz: 平均请求队列长度,队列越长,说明堵塞越严重。

2.iotop - 类似 top 的按进程排序工具

可以像top 命令一样,实时查看哪些进程的 I/O 占用最高。

安装:

For Ubuntu/Debian
sudo apt-get install iotop
For CentOS/RHEL
sudo yum install iotop

使用:

sudo iotop

必须使用sudo 权限运行。

输出分为两大部分上半部分是系统总的磁盘读写速率,下半部分是每个进程的详细 I/O 情况。

你可以按o 键只显示正在产生 I/O 的进程。

按左右箭头键可以排序,例如按IO> 可以根据读排序,按IO< 可以根据写排序。

关键指标:

IO>: 进程的读取速率(KB/s)

IO<: 进程的写入速率(KB/s)

SWAPIN: 进程进行 Swap 交换的百分比

DISK READ,DISK WRITE: 进程的实际磁盘读写速率

3.pidstat - 查看进程的 I/O 统计

pidstatsysstat 工具包的一部分,可以按进程报告 I/O 使用情况。

使用:

间隔2秒报告一次所有进程的I/O情况
pidstat -d 2

关键指标:

kB_rd/s: 进程每秒从磁盘读取的数据量(KB)。

kB_wr/s: 进程每秒向磁盘写入的数据量(KB)。

kB_ccwr/s: 进程被取消的写入磁盘数据量(KB),通常发生在任务被截断时。

二、 系统级工具

`/proc` 文件系统

Linux 的/proc 目录提供了大量内核和进程的信息。

查看磁盘分区信息

    cat /proc/partitions

查看磁盘 I/O 信息

    cat /proc/diskstats

这里的输出字段与iostat 的数据源相同,但以原始数值呈现,需要自己计算差值。

2.vmstat - 查看系统整体状态

vmstat 可以报告关于进程、内存、分页、块 I/O、陷阱和 CPU 活动的信息。

使用:

vmstat 2

2 表示每2秒刷新一次。

关注 I/O 相关的两列:

bi: 每秒从块设备接收的块数(块/秒,读操作)。

bo: 每秒发送到块设备的块数(块/秒,写操作)。

三、 高级与图形化工具

1.atop - 功能强大的综合监控工具

atop 是一个非常强大的终端监控工具,可以记录历史数据,并能回放。

安装:

Ubuntu/Debian
sudo apt-get install atop
CentOS/RHEL
sudo yum install atop

使用:

sudo atop

运行后,按d 键可以切换到磁盘 I/O 视图,清晰地展示每个磁盘和每个进程的 I/O 负载。

2.sar - 系统活动报告(历史数据分析)

sar 也是sysstat 包的一部分,它用于查看历史 I/O 数据,默认情况下,sysstat 会每10分钟收集一次系统指标。

查看今天的磁盘I/O历史:

sar -d

查看指定日期的历史数据(10号):

sar -d -f /var/log/sa/sa10  # 查看10号的数据

3. 图形化工具 (Grafana + Prometheus / Netdata)

对于生产环境,建议使用图形化监控方案,它们能提供历史趋势和警报。

Prometheus + Node Exporter + Grafana: industry standard,Node Exporter 采集服务器指标(包括 I/O),Prometheus 存储,Grafana 做漂亮的图表展示。

Netdata: 一个开源的实时性能和健康监控工具,安装简单,提供极其详细和交互式的 Web 界面,对单机监控非常友好

1、第一步:快速总体评估

* 运行iostat -dx 2,查看%utilawait

* 如果%util 持续接近 100% 且await 很高,说明磁盘存在瓶颈。

2、第二步:定位罪魁祸首进程

* 运行sudo iotoppidstat -d 2,找出是哪个(哪些)进程在疯狂读写磁盘。

3、第三步:深入分析

* 如果找到了高 I/O 进程,结合lsof -p <PID>strace -p <PID> 等命令,查看该进程正在读写哪些文件。

* 使用sar 查看历史趋势,判断问题是持续性的还是偶发性的。

4、长期监控

* 搭建 Prometheus/Grafana 或 Netdata,以便持续监控和及时告警。

高 I/O 等待(await)和高设备使用率(%util)是判断 I/O 瓶颈的最关键指标

文章摘自:https://idc.huochengrm.cn/fwq/15725.html

评论