如何排查服务器性能瓶颈?
常见问题
如何排查服务器性能瓶颈?
2025-04-12 15:12
服务器卡顿?3分钟掌握性能瓶颈排查黄金法则
深夜的报警短信又一次震醒了我——生产服务器CPU飙到98%!作为有10年运维经验的"救火队长",我要分享一套服务器性能瓶颈排查的黄金流程,这套方法曾帮助我快速定位过237次性能危机。
⚠️ 重要提示:90%的性能问题都出在以下四个维度,请按顺序排查
一、CPU性能诊断:不只是看使用率
新手常犯的错误是只盯着top命令里的CPU百分比。真实场景中,你需要:
- 区分用户态与内核态:
mpstat -P ALL 1 查看各核详细状态
- 火焰图定位热点:
perf record -F 99 -g -p 进程ID
perf script | FlameGraph/stackcollapse-perf.pl | FlameGraph/flamegraph.pl > flame.svg
- 特殊场景排查:
• 软中断过高: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
📌 排查速查表
- CPU:
perf top → 火焰图
- 内存:
smem -s swap → OOM日志
- 磁盘:
iostat -x → blktrace
- 网络:
ss -ltnp → tcpdump
记住这个排查顺序能节省80%的故障时间。建议收藏本文,下次服务器报警时按图索骥!
❓ 读者高频问题
Q:容器环境如何排查性能问题?
A:在宿主机执行nsenter -t 容器PID -n perf top,特别注意cgroup限制导致的假性瓶颈。
Q:云服务器性能突降怎么办?
A:先检查云监控的基线数据,特别注意"邻居吵闹"问题,可通过更换物理机解决。
label :
- 服务器性能
- 瓶颈排查
- CPU优化
- 莱卡云
