### [VPS性能突然变差怎么排查?CPU内存磁盘网络四个诊断命令](https://www.jiyueip.com/article/13520) **Published:** 2026-07-30T09:07:13 **Author:** 斑斓助理 **Excerpt:** VPS用着用着突然变卡,网站打开要好几秒、SSH敲命令有明显延迟——这种情况比完全断连更难排查。不是挂了,是慢了。本文用四个命令分别定位CPU、内存、磁盘IO和网络的瓶颈,告诉你性能卡在哪个环节。 排查前的第一步:确认不是自己的网络问题 很 VPS用着用着突然变卡,网站打开要好几秒、SSH敲命令有明显延迟——这种情况比完全断连更难排查。不是挂了,是慢了。本文用四个命令分别定位CPU、内存、磁盘IO和网络的瓶颈,告诉你性能卡在哪个环节。 ## 排查前的第一步:确认不是自己的网络问题 很多”VPS变慢”其实是本地网络到机房的线路波动。在动手排查之前,先换个网络环境(比如手机热点)ping一下服务器,排除自己这一端的问题。如果不同网络都慢,才往下看。 ## CPU排查:top和htop看谁在吃算力 SSH连上服务器后先跑 top,按1键展开所有CPU核心。关注三行关键数据: ``` top # 按1显示每个核心的负载 # 关注这三行: # load average: 0.15, 0.10, 0.05 — 1/5/15分钟平均负载 # %Cpu(s): 2.3 us, 0.7 sy, 0.0 ni, 96.8 id — 注意idle值 # 然后按P按CPU占用排序进程 ``` 判断标准:单核VPS的load average持续超过1.0、idle持续低于20%,说明CPU在满负荷跑。如果MySQL或PHP-FPM进程长期占在CPU排行榜第一行,就是应用层的问题——查慢查询日志或者PHP报错日志。 如果htop看到大量D状态(不可中断睡眠)的进程,说明问题不在CPU而是磁盘IO阻塞了进程,跳到第三节。 ## 内存排查:free看真实可用内存 Linux的内存使用情况看free命令比看top更准确: ``` free -h # 关键看 available 这一列,不是 free # free小但available大=正常,Linux把空闲内存用做文件缓存了 # available也接近0=内存真的不够了 ``` 如果available持续低于200MB,系统在频繁做SWAP交换——内存不够了,把数据写到磁盘上的swap分区。SWAP的读写速度比内存慢几十倍,这就是为什么内存不够时整个服务器都像卡死了一样。 排查谁在吃内存: ``` ps aux --sort=-%mem | head -10 # 按内存占用排序,看前10名 ``` 常见的吃内存大户:MySQL的InnoDB缓冲池(调小innodb\_buffer\_pool\_size)、Redis(设置maxmemory)、PHP-FPM的进程数(调pm.max\_children)。 ## 磁盘IO排查:iostat找到读写瓶颈 磁盘慢是很多VPS性能问题的根因,但容易被忽略。先装工具: ``` apt install sysstat -y # 然后运行 iostat -x 1 5 # 每秒输出一次,共5次 ``` 重点看 %util 和 await 两列。%util接近100%说明磁盘忙不过来了。await是单次IO的平均等待时间——HDD正常在10-20ms,SATA SSD在1-5ms,NVMe在0.1-0.5ms。如果你的VPS用的是SSD但 await 显示80ms以上,很可能是同一台物理机上其他VPS在和你抢磁盘,这种情况只能换服务商。 看看具体是哪个进程在刷磁盘: ``` iotop -o # 只看有IO活动的进程 ``` 常见磁盘杀手:MySQL的binlog写入、网站访问日志(关闭或调低nginx的access\_log级别)、备份任务定时跑了。 ## 网络排查:ping/mtr定位延迟来源 VPS的”慢”如果是网络延迟导致的,查法不一样。先从简单开始: ``` # 从服务器往国内测 ping -c 10 114.114.114.114 # 延迟>200ms、丢包>5%就需要关注 # 更详细的路径分析用mtr mtr -r -c 50 114.114.114.114 # 看每一跳的丢包率和延迟 ``` mtr的价值在于能看到延迟卡在哪一跳。如果丢包从中间某跳开始一路到底,问题在骨干网路由(你基本控制不了,只能等恢复或者换机房位置)。如果只在最后一跳丢包,可能是你本地网络问题。 另外检查带宽使用情况: ``` nload # 实时看入/出流量 # 如果出向带宽长期跑满,检查是否被攻击或者有大文件下载任务 ``` ## 性能问题总结对照表 | 症状 | 最可能原因 | 先跑的命令 | | --- | --- | --- | | SSH敲命令卡、网页响应慢但能打开 | CPU满载或SWAP交换 | top; free -h | | 网站偶尔完全打不开、刷新几次又好了 | 内存不足导致进程被杀 | dmesg \| grep -i kill | | 数据库查询慢、数据写入慢 | 磁盘IO瓶颈 | iostat -x 1 5 | | 速度时快时慢、不稳定 | 线路波动或带宽被占 | mtr; nload | ## 日常做好三件事避免性能问题 1. **装监控**:配一个轻量的监控脚本或工具(比如Netdata),CPU、内存、磁盘、带宽四个维度的历史曲线比事后再查日志有用得多。 2. **设告警**:内存使用超过80%、CPU持续高负载就自动通知你,不要等问题严重了才发现。 3. **定期看dmesg**:dmesg -T | tail -50 翻一下最近的内核日志,OOM killer杀了什么进程、磁盘有没有坏块、网卡有没有异常——这些信息在dmesg里都有。 ## 常见问题 ### VPS配置不差为什么还是卡? VPS是共享物理机的,你的2核4G写在账单上,但如果同物理机上其他VPS在疯狂吃资源,你的性能照样受影响。这是VPS的固有问题,想彻底解决只能用独立服务器或KVM构架的VPS(相比OpenVZ资源隔离更好)。雨云的KVM云服务器资源隔离更彻底,优惠码admin01首月五折。 ### top看到的load average怎么看? load average是处于运行和等待状态的进程数,不是CPU使用率。单核VPS上load持续大于1说明有进程在排队等CPU;大于2说明已经明显卡了。多核VPS的load阈值等于核心数——4核VPS的load超过4才算有压力。 ### VPS经常被OOM Killer杀进程怎么解决? OOM Killer是Linux内存不够时的自救机制,会杀掉内存占用最大的进程。治本的方法是加内存或者调小应用的内存占用(MySQL调小buffer\_pool、PHP-FPM减少max\_children)。临时方案是加swap,但swap只是延缓不解决问题。 **Tags:** VPS性能, 云服务器, 网站运维 **Categories:** 行业洞察 ---