news 2026/4/22 11:13:19

别再只用free和top了!openEuler上这5个内存监控命令,运维老手都在用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再只用free和top了!openEuler上这5个内存监控命令,运维老手都在用

别再只用free和top了!openEuler上这5个内存监控命令,运维老手都在用

在openEuler服务器运维中,内存问题往往是最难啃的硬骨头之一。当系统出现响应迟缓、服务异常时,大多数工程师的第一反应是打开topfree扫一眼内存占用率——这就像用体温计诊断疑难杂症,只能告诉你"发烧了",却无法定位感染源。真正资深的运维专家,工具箱里永远备着更精密的内存分析仪器。

1. 为什么常规命令不够用?

free -mtop的输出看似直观,却隐藏着三个致命盲区:

  1. 缓存误导:Linux会主动利用空闲内存作磁盘缓存,free显示的"used"包含这部分可回收资源。我曾见过一台显示内存占用98%的服务器实际可用内存超过40%
  2. 粒度粗糙top%MEM只显示进程物理内存占比,但现代应用常混合使用共享内存、mmap映射等复杂机制
  3. 维度单一:缺乏交换空间使用明细、缺页中断统计等关键指标,难以预判内存瓶颈
# 典型free输出陷阱示例(单位MB) $ free -m total used free shared buff/cache available Mem: 7982 7123 152 183 706 587 Swap: 2048 127 1921

关键提示:available才是真正可立即分配的内存,不是free

2. 深度内存分析五件套

2.1 pmap - 进程内存解剖镜

当某个Java进程内存异常增长时,用pmap -X可以像CT扫描一样分层查看内存分配:

$ pmap -X 12345 Address Kbytes RSS Dirty Mode Mapping 000055f66e9b0000 1024 768 0 r-x-- java 00007f3d4fdf0000 2048 2048 2048 rw--- [anon] ...

重点关注:

  • [anon]段:可能是堆内存泄漏点
  • 共享内存段(s标志):多个进程共享的库文件
  • 脏页比例:过高可能预示IO压力

实战技巧:结合sort快速定位内存大户

pmap -x 12345 | sort -nk3 | tail -5

2.2 /proc/meminfo - 内存全景雷达

这个虚拟文件提供了200+个内存指标,以下是关键参数对照表:

指标含义危险阈值参考
MemAvailable真正可用内存<10%总内存
SwapCached被换出但未释放的内存>500MB
PageTables页表占用内存>1%总内存
Slab内核对象缓存>5%总内存
CommitLimit系统允许提交的内存上限接近100%
# 动态监控关键指标变化 watch -n 2 'grep -e MemAvailable -e SwapCached /proc/meminfo'

2.3 smem - 智能内存报告器

需要安装smem包,它能自动计算USS/PSS等更真实的内存占用指标:

$ smem -t -k -P nginx PID User Command Swap USS PSS RSS 1234 www-data nginx: worker process 24.3M 56.1M 58.3M 89.2M
  • USS:进程独占物理内存(最真实成本)
  • PSS:按比例计算的共享内存(推荐值)
  • RSS:传统报告值(含共享部分)

对比实验:启动两个相同的Python进程观察共享内存:

python -c "import numpy; a=numpy.zeros(10000000)" & python -c "import numpy; a=numpy.zeros(10000000)" & smem -t -k -P python

2.4 slabtop - 内核内存侦探

free显示内存消失却找不到占用者时,可能是内核对象在"偷"内存:

$ slabtop -o Active / Total Objects (% used) : 234567 / 345678 (67.8%) Active / Total Slabs (% used) : 12345 / 13456 (91.7%) Active / Total Caches (% used) : 89 / 100 (89.0%) Active / Total Size (% used) : 1234.56K / 1456.78K (84.7%) Minimum / Average / Maximum Object : 0.01K / 0.08K / 2.00K OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME 12000 11900 99% 0.10K 300 40 120K buffer_head 8000 7800 97% 0.06K 200 40 80K kmalloc-64

常见问题:

  • dentry缓存暴涨:文件句柄未关闭
  • kmalloc-*过高:内核模块内存泄漏

2.5 vmstat - 动态趋势分析仪

vmstat 2 5输出中的内存相关列解读:

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 51200 123456 78900 456789 0 0 12 23 345 678 10 5 85 0 0
  • si/so:交换区换入/换出速度(>10/s告警)
  • cache:随时间持续增长可能预示内存泄漏
  • wa:IO等待高时可能触发内存回收风暴

组合技:配合pidstat定位问题进程

vmstat 1 | tee memory.log & pidstat -r -p ALL 1

3. 经典故障排查流程

3.1 内存泄漏定位四步法

  1. 初步筛查smem -t -k找出USS持续增长的进程
  2. 详细分析:对可疑进程用pmap -XX查看内存段变化
  3. 内核检查slabtop观察内核对象异常
  4. 趋势验证vmstat -S m 5监控交换活动

3.2 性能调优实战案例

某数据库服务器频繁OOM,但free显示充足内存。通过组合命令发现:

  1. grep HugePages /proc/meminfo显示大页未启用
  2. pmap -x $PID发现大量64KB小内存块
  3. sysctl vm.nr_hugepages=1024配置大页后
  4. 性能提升40%,OOM消失

4. 自动化监控方案

手工命令适合临时排查,生产环境推荐配置告警规则:

# 监控可用内存低于10% cat <<EOF > /etc/telegraf/telegraf.conf [[inputs.mem]] fielddrop = ["active", "inactive"] [[inputs.procstat]] pattern = ".*" metric_prefix = "process_" fieldpass = ["memory_rss"] EOF

关键监控项建议:

  • 进程PSS超过1GB
  • Swap使用率持续>30%
  • Slab内存每周增长>5%
  • 缺页中断数突增10倍
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/22 11:09:47

openclaw框架研究

OpenClaw(俗称"龙虾")作为一个开源、本地优先的AI智能体框架,自2025年11月由奥地利开发者Peter Steinberger创建以来,经历了从Clawdbot到Moltbot再到OpenClaw的名称演变,于2026年初迅速崛起,GitHub星标数突破28万,成为GitHub历史星标第一的开源项目,拥有超过…

作者头像 李华
网站建设 2026/4/22 11:09:15

Python通达信数据读取终极指南:如何免费获取专业级金融数据

Python通达信数据读取终极指南&#xff1a;如何免费获取专业级金融数据 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx 在金融量化分析和股票研究领域&#xff0c;获取高质量、实时的市场数据是每…

作者头像 李华
网站建设 2026/4/22 11:08:06

EPLAN进阶实战:基于STEP模型的智能箱柜定义与高效拼柜流程详解

1. STEP模型导入与基础检查 第一次接触STEP格式的箱柜模型时&#xff0c;我和很多电气工程师一样犯过不少低级错误。记得有次项目赶进度&#xff0c;直接导入模型就开始操作&#xff0c;结果后面发现根本没法用&#xff0c;白白浪费了两天时间。现在我把这些经验教训总结成一套…

作者头像 李华
网站建设 2026/4/22 11:05:38

从零到一:内网安全利器fscan的实战部署与核心功能解析

1. 为什么你需要fscan这款内网扫描神器 第一次接触内网渗透测试时&#xff0c;我像大多数新手一样手足无措。面对庞大的内网环境&#xff0c;传统的手工测试效率低下&#xff0c;而商业扫描工具又价格昂贵。直到发现了fscan这款开源工具&#xff0c;我的工作效率提升了至少10倍…

作者头像 李华