一、为什么需要查看内存信息?
在Ubuntu系统管理中,内存(RAM)是影响性能的关键因素。无论是优化应用程序、排查卡顿问题,还是规划服务器扩容,准确获取内存信息都是基础操作。本文将系统介绍6种实用方法,覆盖从简单到复杂的所有场景。
二、基础命令:快速获取内存总量
1. free命令(最常用)
free -h
输出示例:
| 项目 | 总量 | 已用 | 空闲 | 共享 | 缓冲/缓存 | 可用 |
|---|---|---|---|---|---|---|
| 内存 | 15Gi | 4.2Gi | 1.8Gi | 1.0Gi | 8.0Gi | 10Gi |
参数说明:
- -h:人类可读格式(自动转换单位)
- -m:以MB为单位显示
- -s 5:每5秒刷新一次(实时监控)
2. cat /proc/meminfo(最详细)
cat /proc/meminfo | grep -E "MemTotal|MemFree|Buffers|Cached"
输出示例:
MemTotal: 16278220 kB
MemFree: 1945600 kB
Buffers: 123456 kB
Cached: 8123456 kB
三、高级工具:可视化与深度分析
1. htop(交互式监控)
安装命令:sudo apt install htop
启动后按F2进入设置,在Columns中添加MEM%和RES列
2. vmstat(虚拟内存统计)
vmstat -s
关键指标说明:
| 指标 | 含义 |
|---|---|
| total memory | 物理内存总量 |
| used memory | 实际使用内存(含缓存) |
| active memory | 最近使用的内存(可能被回收) |
四、特殊场景解决方案
1. 容器环境内存查看
docker stats --no-stream
输出示例:
| 容器ID | CPU% | MEM USAGE / LIMIT | MEM% |
|---|---|---|---|
| a1b2c3d4 | 0.25% | 512MiB / 2GiB | 25.00% |
2. 内存泄漏排查
sudo apt install pmap pmap -x| tail -n 10
步骤说明:
1. 通过top找到异常进程PID
2. 使用pmap查看该进程内存映射详情
3. 重点关注mapped和private列持续增长的情况
五、数据对比:不同工具适用场景
| 工具 | 适用场景 | 输出复杂度 | 实时性 |
|---|---|---|---|
| free | 快速查看总量 | ★☆☆ | 静态 |
| /proc/meminfo | 需要精确数值时 | ★★☆ | 静态 |
| htop | 交互式监控 | ★★★ | 实时 |
| vmstat | 系统级分析 | ★★★ | 实时 |
FAQ常见问题大全
Q1: free命令中"available"和"free"有什么区别?
A1: "free"是完全未使用的内存,"available"包含可被快速回收的缓存和缓冲区,更准确反映可用内存。
Q2: 如何查看每个CPU核心的内存使用情况?
A2: 使用numactl --hardware查看NUMA节点分布,结合ps -o pid,psr,rss查看进程的CPU亲和性和内存占用。
Q3: 为什么系统显示内存不足但free命令显示还有很多空闲?
A3: 可能原因:1) 应用程序存在内存泄漏 2) 碎片化导致大块内存不足 3) 内核参数限制(如vm.overcommit_memory)
Q4: 如何监控内存使用历史趋势?
A4: 安装sysstat包后,使用sar -r查看历史内存数据,或配置/etc/default/sysstat设置采集频率。
Q5: 交换分区(swap)使用率高怎么办?
A5: 解决方案:1) 增加物理内存 2) 调整swappiness值(默认60,建议生产环境设为10-20) 3) 检查是否有内存泄漏进程
香港云服务器首购