运维工作中最头疼的问题,莫过于服务器突发卡顿、业务响应超时、SSH连接延迟。很多时候服务器没有直接宕机,日志也无明确报错,但业务就是变慢,盲目重启只能临时解决问题,无法根除隐患。
Linux服务器卡顿的核心瓶颈无外乎六大维度:CPU、内存、磁盘IO、网络、进程异常、系统参数。掌握标准化排查流程,无需逐个瞎猜,按照固定步骤排查,5分钟即可精准定位问题根源。今天给大家分享运维实战通用的Linux卡顿排查六步法,附带实操命令、判断标准和优化思路,新手也能快速上手。
一、排查CPU瓶颈(系统负载过高)
CPU是系统运行的核心,绝大多数突发卡顿,首要原因都是CPU满载、负载过高。优先通过负载均值和CPU占用分布判断问题。
1. 核心排查命令
# 查看系统负载、CPU整体状态(最常用)
top
# 查看1/5/15分钟系统负载
uptime
# 查看CPU核心数,对比负载是否超标
grep -c processor /proc/cpuinfo
2. 问题判断标准
- • 负载阈值:单核CPU,15分钟负载 > 1即为过载;多核CPU,负载值超过核心数80%,说明CPU满载拥堵
- • 区分负载类型:top界面中,us用户态过高是程序代码问题,sy内核态过高是系统调用/驱动问题,wa过高是等待磁盘IO(非CPU问题,后续排查)
3. 常见场景与解决
进程死循环、脚本异常、日志疯狂打印、并发请求暴增,都会导致CPU跑满。在top界面按 P 按CPU排序,杀掉异常进程、优化程序代码、限制程序并发即可缓解。
二、排查内存瓶颈(内存溢出/不足)
内存不足是隐形卡顿的核心元凶,很多时候CPU负载正常,但系统依然卡顿,大概率是内存耗尽、频繁使用交换分区导致。
1. 核心排查命令
# 查看内存、swap分区使用情况
free -h
# 实时查看进程内存占用
top
# 排查内存泄漏,查看进程占用内存排名
ps -aux --sort=-rss | head -10
2. 问题判断标准
- • 可用内存不足:free空闲内存趋近于0,buff/cache占用过高,业务内存被缓存挤占
- • Swap频繁使用:swap used数值持续上涨、频繁变动,说明物理内存不足,系统用虚拟内存代偿,性能暴跌
- • OOM杀进程:执行
dmesg | grep OOM,有输出说明系统因内存不足主动杀死业务进程,导致业务中断卡顿
3. 快速修复方案
临时清理缓存释放内存:echo 3 > /proc/sys/vm/drop_caches;长期需优化程序内存泄漏、扩容物理内存、调整swap分区大小。
三、排查磁盘IO瓶颈(IO等待拥堵)
CPU和内存正常,但系统卡顿、读写文件缓慢、业务超时,90%是磁盘IO打满。磁盘读写速度远低于内存和CPU,一旦IO阻塞,所有依赖磁盘的进程都会卡住。
1. 核心排查命令
# 查看磁盘IO负载、IO等待时间
iostat -x 1
# 查看哪个进程占用磁盘IO
iotop -oP
# 查看磁盘空间、inode占用(inode满会导致无法创建文件,隐性卡顿)
df -h
df -i
2. 问题判断标准
- • %util 接近100%:磁盘IO满载,读写请求排队阻塞
- • top中wa值过高:大量进程在等待磁盘IO完成,系统整体卡顿
- • inode使用率100%:磁盘有空间但无法创建日志、临时文件,业务直接异常
3. 常见诱因
日志狂打、数据频繁写入、定时备份、磁盘坏道、小文件过多耗尽inode。解决方式:清理无用日志、优化写入逻辑、更换高速磁盘、清理冗余小文件。
四、排查网络瓶颈(延迟/丢包/拥堵)
服务器本地资源正常,但外网访问卡顿、接口超时、数据库连接缓慢,问题必然出在网络层面。网络卡顿只影响业务访问,不影响服务器本地操作,极易被误判。
1. 核心排查命令
# 查看网卡流量、收发数据包情况
sar -n DEV 1
# 测试网络延迟、丢包率
ping 网关/业务域名
# 排查端口连接、TIME_WAIT/ESTABLISHED数量
netstat -an | wc -l
ss -s
2. 问题判断标准
- • 网卡流量打满(RX/TX流量接近网卡上限),导致网络拥堵
- • ping延迟波动大、出现丢包、超时,网络链路不稳定
- • 大量TIME_WAIT连接,占用端口资源,导致新连接无法建立
3. 优化方向
调整内核网络参数优化TCP连接、限流异常IP、升级网卡带宽、排查机房链路故障、防御CC/DDOS攻击。
五、排查异常进程(僵尸进程/死锁)
软硬件资源充足,但系统响应缓慢,大概率是异常进程拖累系统,包括僵尸进程、死锁进程、孤儿进程等。
1. 核心排查命令
# 查看僵尸进程数量
ps -ef | grep defunct
# 查看进程状态、是否存在死锁
top -b | grep D
# 排查高频重启、异常退出进程
dmesg | tail
2. 问题影响
僵尸进程会占用系统进程PID资源,大量堆积会导致系统无法创建新进程、新业务无法启动;D状态不可中断进程,会持续占用IO/CPU资源,无法自动退出,持续拖累系统。
3. 处理方式
僵尸进程可通过重启父进程解决,顽固D状态进程需重启服务器;同时排查程序bug,修复进程死锁、异常退出问题。
六、排查系统内核与参数(隐性瓶颈)
资源、进程、网络均无异常,但服务器长期卡顿、偶发超时,大概率是内核参数不合理、系统版本bug、资源限制过低导致的隐性问题。
1. 核心排查方向
# 查看系统日志,排查内核报错
cat /var/log/messages
dmesg
# 查看进程最大文件句柄、进程数限制
ulimit -n
ulimit -u
# 查看内核TCP、内存参数配置
sysctl -a
2. 常见隐性问题
- • 内核TCP参数不合理,导致连接复用率低、端口耗尽
- • 系统内核版本存在已知bug,引发偶发卡顿、内核阻塞
3. 优化方案
永久调整ulimit资源限制、优化sysctl内核网络参数、升级稳定内核版本、关闭无用系统服务减少资源占用。
七、快速排查优先级口诀
先看负载CPU,再查内存Swap,三看磁盘IO,四测网络丢包,五扫异常进程,最后核对内核参数
日常排查无需逐一深挖,按照此顺序,先排除高频问题,再定位隐性瓶颈,大幅提升排障效率。
Linux服务器卡顿从来不是无迹可寻,所有性能问题都有对应的资源瓶颈。这套六步排查法是运维生产环境通用的标准化流程,摒弃盲目重启、瞎猜问题的低效方式,通过数据和状态精准定位根源。