查看: 2|回复: 0

【新手必备】Linux 服务器性能变慢排查手册

[复制链接]

14

主题

1

回帖

62

积分

实习版主

积分
62
发表于 2 小时前 | 显示全部楼层 |阅读模式
一、问题背景与适用场景


服务器性能下降是运维高频问题,核心表现为系统卡顿、业务响应延迟,诱因涵盖 CPU、内存、磁盘 IO、进程、网络五大维度异常。本文面向 Linux 运维与 DevOps 工程师,提供标准化、可落地的排查思路,通过命令与指标精准定位瓶颈,形成 "判断 - 定位 - 修复" 闭环。

二、排查前准备:基线与环境确认


1. 基线数据采集


生产环境需提前记录稳定状态下的核心指标,作为异常判断基准,通过定时任务定期采集:

  • CPU 使用率分布(用户态 / 内核态 / 空闲 / 中断)
  • 内存使用量(已用 / 空闲 / 可用 / 缓存 / 缓冲区)
  • 磁盘 IOPS、吞吐量
  • 网络流量、关键进程资源占用、磁盘空间使用率

2. 系统环境前置检查


排查前先确认基础信息,避免命令输出误判:

  • 操作系统版本:cat /etc/redhat-release
  • 内核版本:uname -r
  • 硬件配置:CPU 核心数、内存总量、磁盘容量
  • 系统负载:uptime(负载均值超过 CPU 核心数即存在资源等待)
  • 系统架构:arch

三、第一步:快速定位瓶颈维度


通过核心命令初步判断是 CPU、内存、IO 还是网络问题:

  • top 命令:默认视图查看 CPU、内存、进程占用;按 M 排序内存、P 排序 CPU、1 展开多核使用率
  • 关键指标判断
    • 用户态 CPU 高 + 空闲低:业务进程 CPU 瓶颈
    • IO 等待高 + 空闲低:磁盘 / 网络 IO 瓶颈
    • 软中断高 + 空闲低:网络流量异常
    • 负载高但 CPU 空闲:IO 阻塞导致
  • vmstat 持续观测:vmstat 1 10 查看进程等待、内存、swap、IO、CPU 趋势,重点关注运行进程数、不可中断进程数、swap 换入换出速率

四、排查方向一:CPU 问题


1. 定位高占用进程


  • 按 CPU 排序查看进程:ps aux --sort=-%cpu | head -n 11
  • 批处理模式精准查看:top -b -n 1 -o %CPU | head -n 20

2. 进程 CPU 详情分析


  • 单进程监控:top -p PID
  • 线程级占用查看:ps -T -p PID
  • 进程完整信息:cat /proc/PID/cmdline | tr '\0' ' '、cat /proc/PID/cwd
  • 进程 CPU 分解:安装 sysstat 后,pidstat -p PID 1 5 查看用户态、内核态、等待时间占比

3. 代码路径定位(Java 进程)


  • 高耗 CPU 线程排查:ps -T -p PID -o pid,tid,psr,%cpu,time,comm | sort -k4 -rn | head -20
  • 线程 ID 转 16 进制:printf "%x\n" 线程ID
  • 线程堆栈分析:jstack PID | grep -A 30 "nid=0x十六进制ID"

4. 短时进程排查


针对瞬时 CPU 峰值,安装 bcc-tools 后,execsnoop -a 30 监控新进程创建

五、排查方向二:内存问题


1. 内存使用查看


  • 概览:free -h(重点关注可用内存,而非空闲内存)
  • 详细分布:cat /proc/meminfo

2. Swap 使用确认


  • Swap 状态:swapon -s、cat /proc/swaps
  • 进程 Swap 占用:遍历/proc/*/status,筛选 VmSwap 非 0 进程并排序

3. 内存泄漏排查


  • 内存趋势对比:间隔采集/proc/meminfo并对比差异
  • 精准内存统计:使用 ps_mem 工具查看进程私有 + 共享内存占用

六、排查方向三:磁盘 IO 问题


1. IO 瓶颈判断


安装 sysstat 后,iostat -xz 1 5 查看磁盘 IOPS、吞吐量、等待时间、利用率,核心判断:利用率超 80%、等待时间过长、队列深度持续偏高即为 IO 饱和。

2. 高 IO 进程定位


  • 实时 IO 进程:iotop(过滤空闲进程、非交互模式采样)
  • 进程 IO 统计:pidstat -d -p PID 1 5
  • 进程读写文件:lsof -p PID
  • 文件变化监控:inotifywait -m -r 目标目录

七、排查方向四:进程状态问题


1. 异常进程统计


  • 进程状态分布:ps aux | awk '{print $8}' | sort | uniq -c | sort -rn
  • 不可中断睡眠进程(D 状态):ps aux | awk '$8 ~ /D/ {print}',查看等待事件:cat /proc/PID/wchan

2. 僵死进程(Z 状态)处理


  • 查找僵死进程:ps aux | awk '$8 == "Z" {print}'
  • 清理方式:终止僵死进程的父进程

3. 进程网络连接


  • 监听端口:ss -tlnp | grep 进程名
  • 连接详情:ss -anp | grep PID
  • 连接状态统计:ss -s

八、排查方向五:网络问题


1. 网络流量监控


  • 网卡流量:cat /proc/net/dev、watch -n 1 'cat /proc/net/dev'
  • 流量趋势:ifstat -a 1 5

2. 连接状态分析


  • TCP 连接统计:netstat -an | awk '/^tcp/ {print $6}' | sort | uniq -c
  • 高频连接 IP:筛选连接源 IP 并排序统计
  • 连接队列溢出:netstat -s | grep -i "overflow"

3. 网络延迟诊断


  • 连通性与丢包:ping -c 10 目标IP
  • 端口连通性:nc -zv 目标IP 端口
  • 路由追踪:traceroute 目标IP、tracepath 目标IP

九、常用排查命令速查表


CPU


top -b -n 1 -o %CPU、vmstat 1 5、pidstat -p PID 1 5、jstack PID、ps -T -p PID

内存


free -h、cat /proc/meminfo、vmstat 1 5、进程 Swap 占用统计命令

IO


iostat -xz 1 5、iotop -b -n 10、pidstat -d -p PID 1 5

进程状态


ps aux | awk '$8 ~ /D/ {print}'、ps aux | awk '$8 == "Z" {print}'、lsof -p PID

网络


ss -tuln、ss -anp | grep PID、连接状态统计命令

十、系统性能调优


1. CPU 调优


  • 合理配置进程线程数
  • CPU 核心绑定:taskset -c 核心范围 PID

2. 内存调优


  • 调整 swappiness 参数,降低 Swap 使用优先级
  • 优化脏页回写策略
  • 提升文件描述符限制

3. IO 调优


  • 配置磁盘调度器(deadline 适合数据库、noop 适合 SSD)
  • 设置进程 IO 优先级:ionice -c 2 -n 0 -p PID

4. 高并发网络调优


优化 TCP 连接队列、超时时间、端口范围、TIME_WAIT 复用等内核参数,通过 sysctl 生效

十一、监控体系建设


1. 核心监控指标


CPU 使用率、内存可用率、磁盘使用率、IO 延迟、系统负载、网络带宽、连接数

2. Prometheus+node_exporter 采集


部署 node_exporter 暴露系统指标,通过 PromQL 配置 CPU、内存、磁盘、IO 监控表达式

3. 可视化与告警


通过 Grafana 搭建监控面板,配置资源过载告警规则,实现问题提前预警

十二、排查复盘与文档化


每次故障完成后,记录故障现象、排查步骤、根因定位、修复方案、验证结果,沉淀团队排查经验,优化流程并推动自动化改进

十三、总结


服务器变慢排查遵循先整体后局部、先排除后确认、用证据下结论原则:先通过 top、vmstat、iostat 锁定瓶颈维度,再针对性深入排查;完善监控体系可提前规避故障,复盘文档可持续提升排查效率。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:admin@discuz.vip

Powered by Discuz! X5.0 © 2001-2025 Discuz! Team.|蜀ICP备2025161238号-5

在本版发帖
关注公众号
QQ客服返回顶部
快速回复 返回顶部 返回列表