一、常用4条排查命令生产通用一键查看内存大户前置区分buff/cache是系统缓存、不占业务内存**used上涨 进程堆内存占用必须查进程**1. top系统自带最通用top进入后按M按内存从高到低排序RES实际物理内存字段释义VIRT进程虚拟内存申请地址空间参考即可RES真实占用物理内存重点%MEM占整机物理内存百分比按P切回CPU排序q退出。2. ps 静态排序导出报表、统计用# 按内存降序展示PID、内存、进程名 ps -aux --sort-rss | head -15 # RSS单位KB换算G/1024/10243. htop可视化推荐安装#CentOS yum install htop -y #Ubuntu apt install htop -y htop鼠标点PERCENT_MEM直接排序直观看到服务占用F9一键杀异常进程。4. 精准统计单个进程 / 服务#筛选mysql、java、nginx等 ps -aux | grep java二、关键指标区分3个内存字段怎么分析%MEM单进程占用整机内存比例你的服务器14G内存单个进程%MEM10%≈占用1.4G以上重点观察RES进程常驻物理内存真实吃掉RAMSHR共享库内存多程序共用不计重复占用误区VIRT大不用慌只是程序预申请内存RES飙升才是内存泄漏/配置过大。三、分步内存分析思路落地排查流程步骤1整体大盘free -havailable持续走低、Swap开始上涨 → 内存资源紧张立刻查高占用进程available充足如你的9.1G可用哪怕个别进程占用偏高暂时不影响稳定性。步骤2定位占用TOP3服务举例常见占用大户Java程序、MySQL、Redis、Nginx、消息队列。Java服务占用过高JVM-Xmx堆参数配置过大远超业务所需修改启动脚本-Xms -Xmx频繁内存上涨代码内存泄漏导出dump快照分析。MySQLinnodb_buffer_pool_size参数过大常规建议物理内存50%以内调小my.cnf。Redismaxmemory配置不合理大量数据全放内存设置淘汰策略。步骤3区分「正常占用」「异常泄漏」平稳占用启动后内存数值长期固定不变 → 配置合理无需优化缓慢持续上涨、只涨不跌 →内存泄漏代码/配置故障必须优化。四、实操结合你14G服务器现场分析Mem:14Gi totalused5.7Giavailable9.1Gi整机业务只占用5.7G资源宽裕若TOP第一进程占用2G左右属于正常业务负载不用优化单进程突然从500M涨到3G异常泄漏排查应用日志。五、实用排查小脚本一键导出内存报表#输出前10大内存进程保存日志 ps aux --sort-%mem | head -10 mem_top.log cat mem_top.log六、配套优化方案配置优化数据库、中间件调低内存上限适配服务器物理规格程序优化泄漏应用迭代修复代码增加定时重启临时方案资源扩容所有服务优化完毕整体used仍逼近总内存70%再升级服务器内存。文末总结口诀看内存先分缓存与进程 top按M排序找元凶 VIRT虚存不用管RES实存是核心 稳步上涨属正常只涨不跌查泄漏。#Linux内存排查 #进程分析 #运维排错