凌峰创科服务平台

Linux如何查看服务器内存使用情况?

在Linux系统中查看服务器内存信息是系统管理和性能监控的重要任务,通过多种命令可以获取内存使用情况、空闲内存、缓存占用等关键数据,以下将详细介绍常用的内存查看方法及其输出解读,帮助管理员全面掌握服务器内存状态。

Linux如何查看服务器内存使用情况?-图1
(图片来源网络,侵删)

使用free命令查看内存概览

free命令是最基础的内存查看工具,通过-h参数可以以人类可读格式(如KB、MB、GB)显示内存信息,执行free -h后,输出通常包括两行:物理内存(Mem)和交换空间(Swap),物理内存部分显示总内存、已用内存、空闲内存、缓冲区和缓存等数据。used列包含真正被程序占用的内存,而buff/cache列是内核用于缓存和缓冲的内存,这部分内存可以在需要时被释放。

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        3.2G        123M        2.4G        5.2G
Swap:          2.0G          0B        2.0G

这里的available列表示新进程可用的内存总量,比free列更准确,因为它包含了可回收的缓存内存。

使用top/htop命令实时监控内存

top命令动态显示系统进程资源占用情况,其中%MEM列表示每个进程的内存占用百分比,通过按M键可以按内存使用率排序进程。htoptop的增强版,提供更直观的界面,不同颜色区分不同类型的内存(如代码、数据、堆栈),并支持鼠标操作,在htop界面中,可以清晰看到:

  • 绿色:用户进程内存
  • 蓝色:内核缓冲区
  • 橙色:缓存内存
  • 红色:交换空间使用

使用vmstat命令分析内存活动

vmstat命令报告虚拟内存统计信息,通过vmstat -s可以显示内存使用的详细摘要,包括:

Linux如何查看服务器内存使用情况?-图2
(图片来源网络,侵删)
  • 总内存、空闲内存、缓冲区、缓存等各项的具体数值
  • 页面错误(pgpgin/pgpgout)、交换活动(swpd)等动态指标 执行vmstat -s | grep "memory"可快速获取内存总量和空闲量。

使用/proc/meminfo文件获取原始数据

/proc/meminfo是Linux内核提供的内存信息虚拟文件,包含更详细的内存参数,通过cat /proc/meminfo可以查看所有内存相关指标,如:

  • MemTotal:总物理内存
  • MemFree:完全空闲内存
  • Buffers:块设备缓冲区
  • Cached:文件缓存
  • Slab:内核数据结构缓存
  • Dirty:待写入磁盘的脏页

使用smem工具分析内存占用

smem工具提供更精确的内存占用分析,特别是区分进程的物理内存和虚拟内存,安装后执行smem -u可以显示每个进程的Unique Set Size(USS),即进程独占的物理内存,排除了共享内存的重复计算,这对于识别内存泄漏或高内存占用进程特别有用。

内存使用情况分析表格

指标 含义 查看命令
MemTotal 总物理内存 free /proc/meminfo
MemFree 完全空闲内存 free /proc/meminfo
Buffers 块设备缓冲区 free /proc/meminfo
Cached 文件系统缓存 free /proc/meminfo
SwapTotal 总交换空间 free /proc/meminfo
SwapFree 空闲交换空间 free /proc/meminfo
Active 活跃内存(常被使用) vmstat -s
Inactive 不活跃内存(可被回收) vmstat -s
Slab 内 slab 缓存 /proc/meminfo
PageTables 页表内存 /proc/meminfo

内存优化建议

  1. 清理缓存:通过echo 1 > /proc/sys/vm/drop_caches清理缓存(需root权限)。
  2. 调整swappiness:修改/etc/sysctl.conf中的vm.swappiness值(默认60),降低可减少交换使用。
  3. 分析高内存进程:使用ps aux --sort=-%mem找出内存占用最高的进程,必要时终止或优化。

相关问答FAQs

Q1: 为什么free命令显示的已用内存(used)和可用内存(available)之和不等于总内存?
A1: 因为Linux内核会利用部分内存作为文件缓存(buff/cache),这部分内存虽然在used列中,但实际上在内存紧张时可以被释放,因此available列更准确地反映了新进程可用的内存。used = active + inactive + dirty,而available ≈ free + reclaimable_cache

Q2: 如何判断服务器内存是否不足?
A2: 可通过以下指标综合判断:

  • free -havailable持续低于总内存的10%;
  • vmstatsi(swap in)和so(swap out)频繁非零;
  • top中多个进程出现内存告警;
  • 系统响应缓慢或OOM Killer(Out of Memory Killer)终止进程。
    此时需检查进程内存占用或考虑增加物理内存。
分享:
扫描分享到社交APP
上一篇
下一篇