上一篇 下一篇 分享链接 返回 返回顶部

服务器卡顿但CPU正常的真实排查过程:问题其实在磁盘IO

发布人:tianfen 发布时间:2026-06-23 16:52 阅读量:1268

今天遇到一个比较典型但容易误判的问题:服务器明显卡顿,但CPU却是正常的。

网站访问延迟变高,后台操作也有延迟,但进入服务器一看,CPU并没有异常。

这种情况如果只看CPU,很容易误判。

一、问题表现

当时服务器的情况是:

  • 网站打开变慢

  • 后台操作有延迟

  • SSH登录有轻微卡顿

  • CPU占用正常(30%以内)

  • 内存也正常

👉 第一眼看完全不像“服务器负载问题”

二、第一步:排除CPU和内存问题

先用基础命令确认:

top

结果:

  • CPU没有异常

  • 内存也没有爆满

  • swap未明显使用

👉 基本排除CPU/内存问题

三、第二步:开始怀疑磁盘IO

因为CPU正常但系统卡顿,这种情况一般有两个方向:

  • 网络问题

  • 磁盘IO问题

我先排除网络:

ping 8.8.8.8

延迟正常,没有丢包。

👉 网络问题排除

四、第三步:检查磁盘IO状态

使用IO监控工具:

iostat -x 1

发现一个明显异常:

👉 磁盘读写延迟非常高(%util接近100%)

同时:

  • await时间明显偏高

  • svctm增加

  • IO等待时间占比很大

五、问题真正原因

继续分析后确认:

👉 大量日志写入 + 数据库频繁读写
👉 导致磁盘IO持续满载
👉 系统在等待磁盘响应

简单来说就是:

CPU在等磁盘,而不是在计算

六、临时处理方法

为了先恢复网站,我做了几个操作:

1. 清理大日志文件

rm -rf /var/log/*.log

2. 重启数据库服务

systemctl restart mysql

3. 重启Nginx

systemctl restart nginx

七、恢复效果

处理完成后:

  • 网站卡顿明显消失

  • 后台响应恢复正常

  • SSH操作流畅

  • IO等待下降

八、后续优化措施

为了避免再次出现类似问题,我做了:

  • 日志按天切割

  • 限制数据库写入频率

  • 定期清理临时文件

  • 监控磁盘IO状态

九、这次问题的核心结论

很多人看到“服务器卡”第一反应是:

  • CPU不够

  • 内存不够

  • 被攻击

但实际情况是:

👉 磁盘IO才是隐藏瓶颈

📌 总结一句话

服务器卡顿但CPU正常,大概率是:

👉 磁盘IO过高导致系统在等待数据响应

目录结构
全文