VPS磁盘I/O延迟高怎么查?用iostat、vmstat与PSI区分队列拥塞

把设备队列、进程读写、PSI压力和业务延迟放到同一条时间线上。
发布于
3

VPS出现请求延迟、数据库卡顿或日志写入变慢时,不能只看 top 的load average。磁盘I/O延迟可能来自设备队列、文件系统写回、云盘突发性能耗尽、容器层写放大或单个进程持续刷盘。先做短时、低开销的指标采样,再把设备、进程和业务时间线对齐,才能避免误扩容或误杀进程。

第一步:确认实际设备和采样窗口

lsblk -o NAME,TYPE,SIZE,FSTYPE,MOUNTPOINTS
findmnt -t ext4,xfs,btrfs
iostat -xz 1 5

iostat中的 await反映请求从提交到完成的平均等待时间,aqu-sz表示队列长度,%util表示设备忙碌程度。它们应结合设备类型、采样时长和云平台监控解读,不能拿一次采样就下结论。

用vmstat区分CPU等待和I/O等待

vmstat 1 5
pidstat -d 1 5

vmstat里的 wa升高说明CPU有时间在等待I/O,但不等同于某个磁盘已经饱和;pidstat -d可以帮助定位读写量和等待进程。若 wa不高而应用仍慢,应继续检查网络、锁竞争、上游服务和程序自身队列。

读取Linux压力指标(PSI)

cat /proc/pressure/io
cat /proc/pressure/cpu

PSI中的 somefull描述任务因资源不足而被延迟的时间比例。它能补充“设备忙不忙”之外的系统视角:设备利用率不高但大量任务被写回或内存回收阻塞时,I/O压力仍可能明显。记录采样时间和业务延迟,便于与监控曲线对应。

四种常见现象如何分流

  • await与aqu-sz同时升高:更像设备队列积压,检查并发写入、云盘性能额度和突发信用。
  • 写入量不大但wa和PSI升高:可能是同步写、日志刷盘、文件系统写回或单次大延迟。
  • 单个进程读写异常:检查备份、索引、压缩、日志轮转和临时文件,先确认是否为预期任务。
  • 容器内慢、宿主指标也高:检查挂载卷、overlay写放大和多个容器的共同竞争;不要只看容器自己的进程列表。

结合云平台与文件系统信息

VPS通常看不到物理磁盘的SMART详情,云盘突发性能、IOPS上限和共享宿主机状态需要在控制台确认。文件系统方面,可查看挂载选项、错误日志和空间/inode使用率:

df -hT
df -i
findmnt -no TARGET,FSTYPE,OPTIONS /
journalctl -k -b --no-pager | tail -n 200

如果同时出现I/O error、设备重置或文件系统被挂成只读,应优先保全数据并按存储故障流程处理,而不是继续压测。

低风险缓解与验证

在确认业务允许后,可降低非关键备份或批处理的并发,错开定时任务,并为日志、临时文件和数据库设置合理的轮转与保留策略。不要直接删除正在使用的数据库文件,也不要为了掩盖延迟盲目修改内核回写参数。每次只改一个变量,随后重新采样 iostat、PSI、应用P95延迟和错误率。

形成可提交的证据包

向云平台或应用团队反馈时,附上采样时间、实例与挂载点、iostat -xzvmstat、PSI、进程级读写、云盘监控和业务延迟曲线。脱敏主机名、账号、Token和用户数据,保留请求ID或任务ID用于关联。这样才能判断是云盘配额、宿主争用、文件系统问题还是应用写放大。

磁盘I/O排查的目标不是找到一个“万能阈值”,而是把延迟、队列、压力、进程和业务现象放在同一时间线上。证据充分后,再决定限流、错峰、扩容或迁移。

常见问题(FAQ)

VPS负载不高,为什么磁盘操作仍然很慢?
load average不能覆盖所有I/O等待场景。应结合iostat的await和aqu-sz、vmstat的wa、PSI以及应用延迟时间线判断。
iostat里的util接近100%就一定是磁盘故障吗?
不一定。它可能表示设备在持续处理请求,也可能是正常达到云盘性能上限;需要结合await、队列、IOPS额度和业务延迟分析。
如何找到造成I/O的具体进程?
可在低开销采样窗口运行pidstat -d,并与应用任务、备份、日志轮转和容器挂载卷对应,避免仅凭进程名杀进程。
I/O错误和普通延迟升高应如何区分?
查看journalctl或dmesg是否有I/O error、设备重置和文件系统错误。出现这些信号时应先保全数据并进入存储故障流程。

本文由作者原创/授权发布于极跃圈(jiyueip.com)未经许可,禁止转载。题图来自Unsplash,基于CC0协议。

声明:极跃圈(JIYUEIP.com)内网友所发表的所有内容及言论仅代表其本人,并不反映任何极跃圈(JIYUEIP.com)之意见及观点。

0 讨论
热门最新
总结
暂无总结
0 / 600

VPS用着用着突然变卡,网站打开要好几秒、SSH敲命令有明显延迟——这种情况比完全断连更难排查。不是挂了,是慢了。本文用四个命令分别定位CPU、内存、磁盘IO和网络的瓶颈,告诉你性能卡在哪个环节。 排查前的第一步:确认不是自己的网络问题 很