尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Linux top/ps 命令实战:5分钟定位CPU 100%与内存泄漏的进程

Linux top/ps 命令实战:5分钟定位CPU 100%与内存泄漏的进程
📅 发布时间:2026/7/5 3:03:15

Linux性能排查实战:5分钟精准定位CPU满载与内存泄漏进程

当服务器突然响应迟缓,终端操作卡顿,或是监控系统频频告警,作为运维工程师或开发者的你该如何快速锁定问题根源?本文将带你深入Linux系统性能排查的核心战场,聚焦top和ps这对黄金组合的实战技巧,通过真实案例演示如何像专业侦探一样抽丝剥茧,在5分钟内精准定位CPU 100%占用和内存泄漏的元凶进程。

1. 性能危机预警:识别异常的关键指标

在开始排查前,我们需要明确几个关键指标的含义及其危险阈值:

  • CPU负载:运行队列中等待CPU资源的进程数。当1分钟负载值持续超过CPU核心数的70%时需警惕
  • 内存使用:重点关注available而非free字段,当可用内存低于总内存10%时可能出现OOM
  • 交换分区:频繁的swap in/out操作是内存不足的明显信号

快速检查系统整体状态:

# 查看核心指标概览 uptime && free -h && df -h # 示例输出: # 16:30:01 up 23 days, 4:32, 2 users, load average: 3.21, 2.89, 2.45 # total used free shared buff/cache available # Mem: 15G 8.2G 512M 1.2G 6.3G 5.4G # Swap: 2.0G 1.7G 300M

注意:当available内存接近耗尽时,系统会开始使用swap空间,此时性能将急剧下降。而CPU负载持续高于核心数2倍以上时,说明系统已过载运行。

2. CPU满载排查:定位贪婪的进程

2.1 实时监控利器:top命令进阶用法

启动基础监控:

top -c

关键操作技巧:

  • 按1:展开显示每个CPU核心的详细利用率
  • 按P:按CPU使用率降序排列(默认)
  • 按M:按内存使用量降序排列
  • 按z:切换彩色/黑白显示
  • 按x:高亮显示排序列

典型异常场景分析:

现象可能原因验证命令
用户空间CPU高应用程序异常循环perf top -p <PID>
系统空间CPU高系统调用频繁/上下文切换pidstat -w 1
软中断CPU高网络包处理瓶颈watch -n1 'cat /proc/softirqs'
IO等待高磁盘性能瓶颈iostat -x 1

2.2 进程快照分析:ps命令组合拳

当需要保存进程状态快照时,ps命令更胜一筹:

# 抓取CPU消耗Top10进程 ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 11 # 抓取内存消耗Top10进程 ps -eo pid,user,%cpu,%mem,cmd --sort=-%mem | head -n 11

实用过滤技巧:

# 统计Java进程资源占用 ps -e -o pid,user,cmd,%cpu,%mem | grep java # 查看特定用户的进程资源 ps -U www-data -o pid,%cpu,%mem,cmd

3. 内存泄漏追踪:发现隐藏的内存黑洞

3.1 内存监控三板斧

方法一:top动态观察

  1. 启动top后按M按内存排序
  2. 关注RES列(实际物理内存占用)
  3. 记录可疑进程PID

方法二:pmap深度分析

pmap -x <PID> | tail -n 1 # 输出示例: # total kB 1036824 978632 919288

最后一行显示该进程占用的总内存、RSS(驻留集大小)和私有内存。

方法三:smem专业统计

smem -p -P nginx # 输出示例: # PID User Command Swap USS PSS RSS # 1234 www-data nginx: worker process 124.4K 12.3M 13.1M 15.6M
  • USS:独占内存(最准确的内存泄漏指标)
  • PSS:按比例计算的共享内存
  • RSS:总物理内存占用

3.2 内存泄漏特征判断

  1. 时间序列对比法:
# 每隔10秒记录一次进程内存 while true; do ps -p <PID> -o %mem= >> mem.log sleep 10 done

如果内存占用呈单调递增趋势,基本可判定存在泄漏。

  1. 内存类型分析:
cat /proc/<PID>/smaps | grep -E '^(Size|Rss|Pss)'

重点观察哪些内存段在持续增长。

4. 高级诊断工具链

4.1 perf性能分析

# 采样CPU使用情况 perf top -p <PID> # 记录调用图 perf record -g -p <PID> -- sleep 30 perf report

4.2 内存泄漏检测神器:valgrind

valgrind --leak-check=full --show-leak-kinds=all ./your_program

4.3 自动化监控脚本

#!/bin/bash CRITICAL=90 # CPU阈值% while true; do PID=$(top -bn1 | grep -E "^\s*[0-9]" | awk '$9>'"$CRITICAL"'{print $1; exit}') if [[ -n "$PID" ]]; then echo "[$(date)] CPU超过${CRITICAL}%的进程:" >> /var/log/cpu_monitor.log ps -fp $PID >> /var/log/cpu_monitor.log pstack $PID >> /var/log/cpu_monitor.log fi sleep 30 done

5. 实战案例库

案例1:Java应用CPU 100%

现象:某Java服务CPU持续满载排查:

  1. top -p <java_pid>发现单个线程CPU占用99%
  2. jstack <pid> | grep -A10 <nid>定位到GC线程疯狂运行
  3. jstat -gcutil <pid>确认老年代内存已满解决:调整JVM参数,增加堆内存

案例2:Nginx内存泄漏

现象:Nginx worker进程内存缓慢增长排查:

  1. smem -P nginx确认USS持续增长
  2. gdb -p <pid>分析内存分配
  3. 发现第三方模块未释放共享内存解决:升级问题模块版本

案例3:内核态CPU占用高

现象:系统CPU使用率80%以上排查:

  1. perf top显示__alloc_pages占用高
  2. sar -B发现major fault激增
  3. 确认某进程频繁mmap大文件解决:优化文件访问模式

6. 性能优化速查表

CPU问题排查路径:

top → pidstat → perf → strace → 代码优化

内存问题排查路径:

top → pmap → smem → valgrind → 代码修复

常用命令速查:

场景命令组合
快速定位CPU问题top -c → 按1 → 按P
统计进程内存ps -eo pid,cmd,%mem --sort=-%mem | head
分析线程栈pstack <pid>或gdb -p <pid> → thread apply all bt
监控系统调用strace -p <pid> -c
网络连接分析ss -tnap | grep <pid>

当面对突发的性能问题时,保持冷静、系统性地排查是关键。记住这个黄金法则:先整体后局部,先监控后分析,先复现后优化。掌握这些工具和思路,你就能在5分钟内快速定位大多数CPU和内存问题,从被动救火转向主动防御。

相关新闻

  • 旋转向量,旋转矩阵,四元数,欧拉角之间的转换公式
  • C++ STL 容器底层实现与迭代器失效规则总结
  • AI替代人力是假象?微软派6000人驻场,Ford召回老工程师,人力价值凸显!

最新新闻

  • 2026年靠谱AI论文写作软件全攻略(含详细使用步骤)
  • Trilium中文版终极指南:免费开源笔记软件如何彻底改变你的知识管理
  • Codex启动自动请求API怎么关闭?关闭Suggest Prompt节省API Token教程
  • AI 电动窗帘电机智能功率 小型化、低功耗 完整选型方案
  • 从零开始:40个经典DSGE模型帮你快速掌握宏观经济建模
  • 3个关键步骤彻底掌握Pyfa:EVE玩家的离线配装革命

日新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号