如何排查服务器性能瓶颈?

常见问题

如何排查服务器性能瓶颈?

2025-04-12 15:12


                                            

服务器卡顿?3分钟掌握性能瓶颈排查黄金法则

2023年10月15日 运维老司机

深夜的报警短信又一次震醒了我——生产服务器CPU飙到98%!作为有10年运维经验的"救火队长",我要分享一套服务器性能瓶颈排查的黄金流程,这套方法曾帮助我快速定位过237次性能危机。

⚠️ 重要提示:90%的性能问题都出在以下四个维度,请按顺序排查

一、CPU性能诊断:不只是看使用率

新手常犯的错误是只盯着top命令里的CPU百分比。真实场景中,你需要:

  1. 区分用户态与内核态
    mpstat -P ALL 1 查看各核详细状态
    CPU状态监控示意图
  2. 火焰图定位热点
    perf record -F 99 -g -p 进程ID
    perf script | FlameGraph/stackcollapse-perf.pl | FlameGraph/flamegraph.pl > flame.svg
  3. 特殊场景排查
    • 软中断过高:watch -n 1 'cat /proc/softirqs'
    • 上下文切换:vmstat 1看cs列

二、内存分析:OOM杀手在行动

当收到"Killed process"日志时,内存问题往往已到晚期。推荐提前预防:

检查项 命令 危险阈值
物理内存 free -h available < 10%
SWAP使用 swapon --show used > 0
Slab缓存 slabtop SReclaimable > 1GB

典型案例:某电商大促期间,dentries缓存暴涨导致OOM,通过echo 2 > /proc/sys/vm/drop_caches临时解决。

三、磁盘IO:看不见的性能杀手

工具矩阵

  • iostat -x 1:看await和%util
  • iotop:类似top的IO版
  • blktrace:深度追踪IO路径

优化策略

  • SSD关闭barrier
  • 调整vm.dirty_ratio
  • XFS vs ext4性能对比

血泪教训:某数据库服务器因vm.dirty_background_ratio=90设置导致写入风暴,调整为10后性能提升8倍。

四、网络瓶颈:TCP层的那些坑

当出现"Connection timeout"时,按此流程排查:

1. ss -s看总连接数 → 2. ethtool -S eth0看丢包 → 3. tcpdump抓包分析

高频问题
• TIME_WAIT堆积:net.ipv4.tcp_tw_reuse=1
• 小包问题:ethtool -K eth0 tx off rx off

📌 排查速查表

  1. CPU:perf top → 火焰图
  2. 内存:smem -s swap → OOM日志
  3. 磁盘:iostat -x → blktrace
  4. 网络:ss -ltnp → tcpdump

记住这个排查顺序能节省80%的故障时间。建议收藏本文,下次服务器报警时按图索骥!

❓ 读者高频问题

Q:容器环境如何排查性能问题?

A:在宿主机执行nsenter -t 容器PID -n perf top,特别注意cgroup限制导致的假性瓶颈。

Q:云服务器性能突降怎么办?

A:先检查云监控的基线数据,特别注意"邻居吵闹"问题,可通过更换物理机解决。


标签:
  • 服务器性能
  • 瓶颈排查
  • CPU优化
  • 莱卡云