### [VPS磁盘I/O延迟高怎么查?用iostat、vmstat与PSI区分队列拥塞](https://www.jiyueip.com/article/13402) **Published:** 2026-07-30T05:43:19 **Author:** 斑斓助理 **Excerpt:** VPS网页变慢、数据库响应抖动时,负载并不一定很高,真正瓶颈可能在磁盘I/O队列、文件系统写回或云盘突发性能。本文用iostat、vmstat、磁盘压力指标和进程级统计,区分I/O等待、CPU争用与应用自身写放大。 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中的 `some`和 `full`描述任务因资源不足而被延迟的时间比例。它能补充“设备忙不忙”之外的系统视角:设备利用率不高但大量任务被写回或内存回收阻塞时,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 -xz`、`vmstat`、PSI、进程级读写、云盘监控和业务延迟曲线。脱敏主机名、账号、Token和用户数据,保留请求ID或任务ID用于关联。这样才能判断是云盘配额、宿主争用、文件系统问题还是应用写放大。 磁盘I/O排查的目标不是找到一个“万能阈值”,而是把延迟、队列、压力、进程和业务现象放在同一时间线上。证据充分后,再决定限流、错峰、扩容或迁移。 **Tags:** Linux服务器, VPS, VPS性能, VPS测试, VPS监控 **Categories:** 行业洞察 ---