当前位置:首页 > 问答 > 正文

内存管理|服务器运维|linux查看服务器内存的常用命令与详细操作方法

🔍 Linux服务器内存管理:常用命令与运维技巧全掌握

📢 最新动态(2025年8月)
近期Linux内核6.9版本优化了内存压缩算法,对高负载服务器的OOM(内存溢出)处理效率提升约15%,运维人员可关注/proc/meminfo中新增加的Zswap统计项。


🧠 为什么内存管理很重要?

服务器内存就像人类的短期记忆💾——用满会卡顿,溢出会崩溃!通过Linux命令实时监控内存使用,能快速定位性能瓶颈,避免服务宕机。


🔧 5个必知内存查看命令

1️⃣ free -h 👀 一眼看懂内存状态

$ free -h  
              total    used    free    shared  buff/cache   available  
Mem:           32G     12G     5G      1.2G     14G         18G  
Swap:          8G      0B      8G  
  • 关键指标
    • available:真正可用的内存(含缓存回收空间)📊
    • buff/cache:磁盘缓存占用的内存,必要时可释放

2️⃣ top 🚦 动态监控内存杀手

Shift+M按内存排序进程:

内存管理|服务器运维|linux查看服务器内存的常用命令与详细操作方法

PID USER     %MEM  COMMAND  
789 mysql    25%   mysqld  
456 java     18%   java -Xmx16G  
  • 技巧
    • 关注%MEM超过10%的进程⚠️
    • E切换内存单位(KB/MB/GB)

3️⃣ vmstat 2 5 📈 洞察内存波动趋势

procs -----------memory---------- ---swap--  
 r  b   swpd   free   buff  cache   si   so  
 1  0      0 523412 102344 1801232  0    0  
  • 重点参数
    • si/so:Swap交换频率(持续大于0说明内存不足❗)
    • 第2列数字表示采样间隔(2秒1次,共5次)

4️⃣ cat /proc/meminfo 🔍 查看内核级内存详情

MemTotal:    32894204 kB  
MemFree:     523412 kB  
Cached:      1801232 kB  
SwapCached:  0 kB  
  • 运维必看项
    • Slab:内核对象占用内存(如频繁增长可能内存泄漏)
    • HugePages:大页内存配置情况

5️⃣ smem -s swap 🕵️ 揪出隐形内存消耗者

(需安装smem工具)

PID User     Swap     USS     PSS  
666 nginx    124M     89M     92M  
  • 独特优势
    • USS:进程独占内存(最真实占用)
    • PSS:按共享比例计算的内存(更公平)

🛠️ 实战内存问题处理

▫️ 案例1:物理内存耗尽

现象free显示available接近0,服务响应变慢
解决

  1. top找到内存大户
  2. 临时方案:sync; echo 3 > /proc/sys/vm/drop_caches 清理缓存
  3. 长期方案:优化应用配置或扩容内存

▫️ 案例2:Swap频繁写入

现象vmstatso持续大于0
危险:磁盘IO飙升,性能雪崩❄️
解决

内存管理|服务器运维|linux查看服务器内存的常用命令与详细操作方法

  • 调整Swappiness:sysctl vm.swappiness=10(降低交换倾向)
  • 彻底禁用Swap:swapoff -a(仅限内存充足时)

💡 高级技巧

  • 内存泄漏检测
    valgrind --leak-check=yes your_program
  • 定时监控脚本
    #!/bin/bash  
    echo "$(date) 内存状态:" >> /var/log/mem.log  
    free -h >> /var/log/mem.log  
  • Zswap调优(内核≥6.9):
    echo 40 > /sys/module/zswap/parameters/max_pool_percent

🌟

掌握freetopvmstat三件套能解决80%内存问题,遇到复杂情况时/proc/meminfosmem是终极武器。健康的服务器内存应该像海绵🧽——有弹性空间,而不是灌满的水桶!

(注:本文命令测试于CentOS 9/RHEL 9及Ubuntu 24.04 LTS,2025年8月验证)

发表评论