Linux 系统卡顿?这几个命令 90%
为什么服务器会突然变慢?先学会用命令说话
很多新手遇到 Linux 系统卡顿 第一时间想重启,但重启只是治标。
真正能解决问题的是学会用几条命命令快速定位瓶颈。
下面这四条命令,覆盖了 90% 的卡顿场景:CPU、内存、磁盘 I/O 和网络连接。
准备工作:一个 SSH 连接就够了
你需要有一台 Linux 服务器(CentOS 7+ / Ubuntu 18.04+),通过 SSH 登录。
如果你用的云服务器,在控制台直接点「远程连接」也可以。
提醒:下列命令大部分系统自带,无需额外安装;如果提示找不到iostat,运行yum install sysstat -y(CentOS)或apt install sysstat -y(Ubuntu)。
第一步:用 top 看 CPU 和内存谁在吃资源
运行命令:
top
你会看到一个实时刷新的界面。
重点看两行:
- %Cpu(s) 行:
us是用户程序占用,sy是系统内核占用,id是空闲。如果us持续超过 70%,说明 CPU 吃紧。 - 内存行(KiB Mem):
total总量,used已用,free空闲。若free接近 0 且used持续高位,内存不足。
按 1 可以查看每个 CPU 核心情况。
按 q 退出。
小技巧:在 top 界面按Shift + P按 CPU 使用排序,按Shift + M按内存排序,瞬间找出那个“吃”资源的进程。
第二步:用 free -h 看清楚内存真实状态
top 里的内存信息略显粗糙,我们再用 free 确认:
free -h
输出示例:
total used free shared buff/cache available
Mem: 7.6G 5.2G 1.1G 456M 1.3G 1.8G
关键看 available 列,它才是真正可用的内存。
如果 available 小于 10%,说明内存严重不足。
不要只盯着 free,因为 Linux 会把空闲内存用作缓存(buff/cache),当程序需要时再释放。
第三步:用 iostat 检查磁盘是否拖慢系统
磁盘读写慢是 Linux 系统卡顿 的常见元凶,尤其当数据库或日志频繁写入时。
运行:
iostat -x 1 3
关注两个指标:
- %util:磁盘忙绿百分比,超过 80% 基本等于磁盘是瓶颈。
- await:平均每次 I/O 等待时间(毫秒),大于 20ms 说明磁盘响应慢。
如果 %util 很高但 await 正常,可能是磁盘队列过深;
如果两者都高,优先考虑换 SSD 或限流日志写入。
第四步:用 ss 查看网络连接是否异常
网络连接过多也会让系统卡顿,比如被攻击或程序没释放连接。
运行:
ss -tuln
这个命令列出所有监听端口和当前连接。
想看详细状态和每个连接的等待时间,用:
ss -ant | head -20
如果发现大量 TIME_WAIT 或 CLOSE_WAIT 状态连接(超过几千个),说明应用层没正确关闭 socket,需要优化代码或者调整内核参数。
避坑指南:新手最容易犯的四个错
- 只看负载不看 CPU:
uptime里的 load average 大于 CPU 核心数不一定真卡,还要结合top看%wa(等待 I/O)是否过高。 - 误杀 systemd 进程:用
kill -9结束可疑进程前,先用ps -ef | grep 进程名确认不是关键服务。 - 忽略内核日志:输入
dmesg | tail -20,如果看到Out of memory或killed process,说明内存耗尽触发 OOM Killer,这时候必须加内存或优化程序。 - 在高峰时段跑压测:不要在业务高峰期跑
dd或stress测试,否则可能直接导致服务宕机。
高频问题解答
Q:运行 iostat 提示 command not found?
A:安装 sysstat 包。CentOS 用 yum install sysstat -y,Ubuntu 用 apt install sysstat -y。
Q:top 显示 CPU 空闲 90%,但系统还是卡?
A:卡顿不一定是 CPU 问题。检查磁盘 I/O(iostat %util)或者内存是否频繁 swap(输入 vmstat 1 看 si 和 so 列持续大于0)。
Q:哪个命令对新手最友好?
A:先运行 top 看全局,再根据问题点用其他命令深入。如果不想记命令,很多面板(宝塔、1Panel)也集成了资源监控,点开就能看。
效果验证:如何确认系统恢复?
执行完上述排查步骤并做出相应优化(如杀掉吃资源的进程、清理缓存、调整连接数)后,再次运行 top 观察 id 是否回升到 80% 以上,运行 free -h 看 available 是否恢复到总量 20% 以上。
打开网页或业务接口,响应时间明显缩短就说明问题解决了。
记住:排查 Linux 系统卡顿 不要凭感觉,让这四条命令帮你科学定位。 如果你在处理过程中遇到异常,优先重看本文避坑部分,并且保存每个步骤的输出截图,方便后续对比。