运维场景中,Linux服务器响应迟缓、SSH登录卡顿、业务接口超时是高频问题,盲目重启只能临时缓解,无法根除隐患。本文基于生产环境实战经验,整理CPU、内存、磁盘IO、网络、进程、日志全维度排查流程,帮你快速锁定瓶颈,高效解决问题。
确认卡顿类型:突发性/持续性、单机/集群影响、是否有代码上线/配置修改/流量突增等变更
记录系统基础信息
# 查看内核与系统版本 uname -a cat /etc/os-release # 记录当前时间,方便对照日志时间点 date
top是服务器性能排查的首选工具,可实时查看系统负载与进程资源占用,推荐带完整命令名的执行方式:top -c
load average:1/5/15分钟系统平均负载,数值持续高于CPU核心数,代表资源争抢严重
%Cpu(s):用户态(us)、系统态(sy)、空闲(id)占比,sy过高多为IO/中断处理密集导致
%Mem:物理内存使用率,超过80%需警惕内存溢出风险
进程列表:按CPU/内存排序,快速锁定高占用进程
top -d 1缩短采样间隔。mpstat细分CPU消耗类型,定位问题根源:# 查看所有CPU核心详细统计,1秒采样1次,共3次 mpstat -P ALL 1 3
%usr偏高:用户程序计算密集,需优化算法或扩容CPU
%sys偏高:内核态消耗大,多为系统调用频繁、驱动异常导致
%iowait偏高:CPU等待磁盘IO,需转向磁盘IO排查
%steal偏高(云服务器):宿主机资源争抢,联系云厂商处理
pidstat精准查看进程CPU占用:pidstat -u 1 5
# 查看内存整体使用情况(人性化单位) free -h # 查看内存、缓存、交换分区详细信息 cat /proc/meminfo | grep -E "Mem|Swap|Cache|Buffer"
available:真实可用内存(含可回收缓存),比free字段更具参考价值
Swap使用率:持续上涨代表物理内存耗尽,系统开始使用交换分区
Active(file):活跃文件缓存过大,会挤压应用程序内存空间
pidstat -r定位内存占用大户:pidstat -r 1 3
%iowait偏高、系统无理由卡顿时,重点排查磁盘:# 查看磁盘详细IO统计,1秒刷新1次,共5次 iostat -x 1 5
%util:磁盘繁忙度,持续超80%代表磁盘已饱和
await:IO请求平均等待时间(队列+服务时间),超20ms需优化
svctm:IO真实服务时间,反映磁盘硬件性能
avgqu-sz:平均请求队列长度,持续大于2说明请求堆积
# root权限查看进程实时IO速率 iotop -oP # 或用pidstat查看进程IO统计 pidstat -d 1 3
带宽占用分析
# 查看网卡实时流量 sar -n DEV 1 5 # 安装iftop后,查看连接级流量 iftop -i eth0
TCP连接状态分析
# 查看TCP连接总体统计
ss -s
# 统计各状态连接数量
ss -ant | awk '{print $1}' | sort | uniq -cTIME_WAIT过多:短连接频繁创建销毁,调优tcp_tw_reuse等内核参数
CLOSE_WAIT堆积:应用未正常关闭连接,存在句柄泄漏,需修复代码
perf采样分析:# 对指定PID进程采样30秒,记录调用栈 perf record -p <PID> -g -- sleep 30 # 生成采样报告 perf report
perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > perf.svg
kernel-debuginfo包才能正常使用perf。strace追踪系统调用,定位异常逻辑:# 追踪已运行进程,统计系统调用耗时与次数 strace -p <PID> -c # 启动进程时追踪,输出日志到文件 strace -o output.log <启动命令>
read/write频繁且数据量小:碎片化IO问题
open/stat调用过多:文件遍历、配置重载过于频繁
futex/mutex耗时高:程序内部锁竞争严重
# vmstat:基础综合监控,1秒刷新1次,共10次 vmstat 1 10 # dstat:更丰富的可视化监控,需安装 dstat -cdngy 1 5
r/b:运行队列/阻塞队列,r持续大于CPU核数代表负载过高
si/so:交换分区换入换出量,非零代表内存压力大
bi/bo:块设备读写速率,直接反映IO负载
us/sy/id/wa:CPU时间分布,与top指标一致
# 倒序查看最近50条系统日志 journalctl -r -n 50 # 查看系统 messages 日志 tail -n 100 /var/log/messages # 查看OOM killer 记录 dmesg | grep -i "killed process"
性能异常时间点是否有错误日志爆发
检索Out of memory、I/O error等关键报错
对照应用日志,排查慢查询、接口超时、程序异常堆栈
await飙升但无高IO进程,最终通过dmesg发现磁盘控制器硬件故障,完成更换后恢复。排查场景 | 推荐命令 | 核心关注指标 |
|---|---|---|
系统整体负载 | top、uptime | load average、CPU总使用率 |
CPU详细分析 | mpstat、pidstat -u | %usr、%sys、%iowait |
内存状态监控 | free、pidstat -r | available、Swap使用率、RSS |
磁盘IO诊断 | iostat -x、iotop | %util、await、avgqu-sz |
网络流量与连接 | sar -n DEV、ss | 网卡流量、TCP连接状态 |
进程热点分析 | perf、strace | 热点函数、系统调用分布 |
多维度综合监控 | vmstat、dstat | 进程、内存、IO、CPU联动趋势 |
全文详见:http://it-club.cn/post/802.html