标题:云服务器卡顿原因有哪些?先查这几项最省事
云服务器突然变慢,网页打不开,接口超时,SSH 连上了也一顿一顿的。站长和开发者大多碰到过这种情况。第一反应常是升级配置,钱花了,问题不一定消失。这篇按由浅入深的顺序整理卡顿原因,每一项都附上能直接执行的命令。

先看卡顿的表现
表现不同,方向就不同。先确定自己碰到的是哪一种,能少走很多弯路。
- 整体变慢:所有请求都慢,连 SSH 登录也慢,多半是 CPU、内存或磁盘资源被占满。
- 间歇性卡顿:每隔一阵子卡一下,多数和定时任务、备份脚本或突发流量撞在一起。
- 网络卡顿:机器内部命令跑得正常,外部访问延迟高或丢包,问题往往在带宽、线路或安全组。
- 只在特定操作时卡:比如上传文件或跑某个查询时卡,通常落在 I/O 或应用代码上。
七个常见原因
1. CPU 被占满
进程抢着用 CPU,其他服务只能排队。典型情况是某个爬虫脚本、死循环程序,或者被植入的挖矿程序,长期占着 100% 的 CPU。用 top 或 htop 打开后按 CPU 排序,占用最高的那几个进程一般就是嫌疑对象。
2. 内存不够,系统开始频繁用 swap
物理内存耗尽后,系统会把内存页写到 swap(交换分区)里。磁盘比内存慢得多,访问速度可能掉几十倍。用 free -h 看一下可用内存,如果 swap 使用量一直在涨,说明内存已经成了瓶颈。常见的诱因有三个:Java 应用的堆设得过大,PHP-FPM 的进程数配多了,或者 MySQL 的缓冲池超出了机器实际内存。
3. 磁盘 I/O 跟不上
日志写得多、数据库读写频繁、备份任务正好撞上业务高峰,都会把磁盘 I/O 拖满。用 iostat -x 1 观察 %util,如果长时间接近 100%,就说明磁盘确实忙不过来。普通云盘的 IOPS 上限不高,业务高峰时很容易触顶,这种情况下可以看看能不能换成性能更高的云盘类型。
4. 磁盘写满
磁盘使用率超过 90% 之后,文件系统性能会明显下降,有的服务还会因为写不进日志直接报错。先用 df -h 看整体,再用 du -sh /var/log/* 找出占空间的大文件。有个案例:某电商站点的 Nginx 访问日志没配轮转,半年攒到 38GB,磁盘占用 96%,数据库写入超时,页面频繁卡死。配置 logrotate 并清掉历史日志后,平均响应时间从 2.3 秒降到 0.4 秒。
5. 带宽打满,或者流量超了套餐
带宽到顶之后,数据包要排队甚至被丢弃,表现为下载慢、页面一直转圈。用 iftop 或云厂商控制台的监控图看看进出两个方向的流量。遇到 CC 攻击或者被爬虫高频抓取时,峰值会远高于平时。还有一点容易忽略:按流量计费的套餐超出后,部分厂商会限速,这时带宽曲线看着并不高,网速却明显慢下来。
6. 应用代码的问题
服务器资源明明充足,慢却出在程序上:数据库慢查询没加索引,缓存失效后大量请求直接打到数据库,连接池没有释放,调用第三方接口时没设超时。有个 SaaS 工具的订单列表页,数据超过 20 万条后加载要 8 秒。开启慢查询日志才发现,一条 WHERE 查询没有索引,占了大部分时间。给 user_id 和 created_at 加上联合索引后,加载时间降到 300 毫秒以内。
7. 实例规格本身的限制
有些实例是突发性能型,按 CPU 积分计费。积分用完后,性能会被压到基线水平,表现为长时间稳定但很慢。宿主机超售严重的时候,CPU 也可能被同机其他租户挤占。这类问题有时在重启或迁移实例之后会有所缓解,判断时要结合云厂商的资源说明来看,而不是只盯着应用本身。
五步排查流程
- 看负载:运行 uptime 和 top,判断 CPU 和负载是不是偏高。
- 看内存和交换:运行 free -h 和 vmstat 1 5,观察 si、so 两列是否持续有数值。
- 看磁盘:运行 df -h 和 iostat -x 1,检查空间和 I/O 使用率。
- 看网络:在云控制台看带宽曲线,用 ss -s 查连接数有没有异常堆积。
- 看应用:翻应用日志和数据库慢查询日志,定位到具体的接口或 SQL。
按这个顺序走,一般半小时内能把范围缩小。前四步都正常的话,问题大概率在应用层。
日常预防
- 给 CPU、内存、磁盘和带宽配监控告警,阈值设在 70% 到 80% 比较合适,留出处理的时间。
- 日志开启自动轮转,保留时长按实际需要定,别让它无限增长。
- 定时任务避开业务高峰,大型备份安排在凌晨。
- 数据库定期看慢查询,核心表确认有合适的索引。
- 对外接口加限流,免得恶意请求把带宽和连接数占满。
什么时候该升配置
排查完如果发现 CPU 和内存长期处在高位,而且占用的进程都是正常业务,说明规格确实不够,这时升级就是对的。反过来,资源集中耗在某个异常进程或某条慢查询上,先优化比扩容划算得多。升级前最好先做一次快照,出了问题能快速回滚。
卡顿很少只有一个原因。按“看负载、看内存、看磁盘、看网络、看应用”一层层查下来,就不容易在没找到原因前先把钱花出去。