Windows云服务器磁盘IO负载过高怎么办?
问题描述
使用Windows系统的ECS实例时,出现如下现象:
可能原因
引起磁盘I/O负载过高的常见原因如下:
- 异常的进程或服务占用大量磁盘I/O,导致磁盘I/O负载过高。
- 业务程序及业务场景对实例的磁盘I/O负载要求较高,实例的磁盘I/O性能不足以支撑业务开展所需的磁盘I/O性能要求。
排查方法
要定位磁盘I/O负载过高的问题,您可以参见下述操作步骤进行问题的排查定位。
- 查看进程占用的磁盘I/O负载详情。
您可以使用Windows系统中默认安装的资源监视器应用查看磁盘I/O负载等资源的使用情况,该应用支持查看单个进程的磁盘I/O负载情况。
- 在Windows桌面左下角的搜索框中,输入“资源监视器”,并按Enter键打开资源监视器程序。
- 在“资源监视器”中单击“磁盘”页签,查看各个进程的磁盘I/O负载情况。
图1 资源监视器
重点关注如表1所示的指标。
该指标仅供参考,具体情况依据用户自身使用决定。
表1 磁盘I/O负载情况指标 指标
含义
负载状态说明
磁盘活动(Disk Activity)
- 名称:显示哪些进程正在读写磁盘。
- 读 (字节/秒) 和 写入 (字节/秒):每个进程的磁盘读写速度(字节/秒)。
- 总数 (字节/秒):该进程的总磁盘 I/O 量。
- 如果某个进程的 “总数 (字节/秒)” 持续超过 50MB/s(约 50,000,000 字节/秒),说明该进程正在大量读写磁盘,可能会导致系统变慢。
- 如果“系统空闲(Idle)”时磁盘仍持续高负载(如 >10MB/s),可能是后台服务(如Windows Update、杀毒软件)在扫描或更新。
磁盘队列长度(Disk Queue Length)
“队列长度”表示等待磁盘处理的 I/O 请求数量。
- 理想情况:0 或接近 0(表示磁盘能及时处理请求)。
- 负载较高:持续 > 2(机械硬盘)或 > 1(SSD)。
- 严重瓶颈:持续 > 5-10,说明磁盘无法及时处理请求,系统会明显卡顿。
说明:- 机械硬盘(HDD) 队列长度容忍度稍高(2-5)。
- 固态硬盘(SSD) 队列长度应尽量低于 1-2,否则可能影响性能。
响应时间(Response Time)
“平均响应时间”(毫秒,ms)表示磁盘处理单个 I/O 请求的时间。
- 正常范围:
- SSD:通常 < 10ms(优秀),10-20ms(一般),> 20ms(可能负载高)。
- HDD:通常 < 20ms(良好),20-50ms(一般),> 50ms(高负载)。
- 问题表现:
- 如果平均响应时间 持续 > 100ms,说明磁盘严重过载,系统会明显卡顿。
- 如何判断磁盘 I/O 是否过高。
表2 磁盘 I/O指标 指标
正常范围
高负载
严重瓶颈
磁盘队列长度
0-1 (SSD), 0-2 (HDD)
2-5
>5
响应时间
<20ms (SSD), <50ms (HDD)
20-100ms
>100ms
持续读写速度
<50MB/s
50-100MB/s
>100MB/s
如果出现以下情况,说明磁盘 I/O 负载过高:
- 队列长度持续 > 2(SSD)或 > 5(HDD)。
- 平均响应时间 > 50ms(SSD)或 > 100ms(HDD)。
- 某个进程持续占用高磁盘读写(如 >50MB/s)。
- 处理磁盘I/O负载高的问题
表3 磁盘I/O负载高问题的原因及解决方案 问题现象
原因
解决方案
异常用户程序或进程长时间占用大量磁盘I/O资源
该程序为异常程序或进程,运行时占用过多磁盘I/O资源。
通过在“资源监视器”中定位到占用磁盘I/O资源较多的程序,在该程序上右键单击,并单击“结束程序”即可。
注意:在您结束进程前,请务必确保您了解该进程的相关信息,避免因误操作导致您的业务中断。
如果怀疑进程为恶意程序,您可以对其进行查杀,相关操作,请参见病毒查杀。
正常用户程序或进程长时间占用大量磁盘I/O资源
该程序为正常业务程序或进程,运行时占用过多磁盘I/O资源。
如果云盘出现磁盘I/O性能瓶颈,您可以根据实际情况选择对应的处理方案:
- 变更云盘类型:当现有云硬盘性能已经无法满足您的业务需求,您可以变更云硬盘类型,提升云硬盘性能以满足业务需求。操作请参见变更云盘类型。
- 通过LVM提升云盘性能:详见如何提升云硬盘的性能。
没有单个程序或进程占用大量磁盘I/O资源
当前实例的服务正常运行所需磁盘I/O资源性能大于实例的磁盘I/O性能。
单个程序或进程偶发磁盘I/O占用过高,但持续时间较短,且发生频率较低