跳到主要内容

服务器内存

free命令​

  • free 命令显示系统内存的使用情况
    • available可用内存
    • total总内存
  • 若available / total 持续低于20%,表明内存紧张
bash
free -m
free -h

free -m与free -h的区别​

  • 推荐使用free -h可以更直观的查看内存使用情况,适合日常快速查看来定位内存情况
    • -h参数可以更直观,更人性化、可读性更好
参数显示单位适用场景示例输出
-m固定为MB(兆字节)需精确数值分析或脚本处理Mem: 16384 12000 400
-h自动适配单位(KB/MB/GB)快速查看,避免手动换算,更易读Mem: 16G 12G 400M

内存实例输出解析​

  • toal总内存、used已用内存、free空闲内存、available可用内存
bash
total used free shared buff/cache available
Mem: 16G 12G 400M 1.2G 3G 14G
Swap: 2G 500M 1.5G

free列空闲内存理解​

  • 注意free列不是可用内存,而是空闲内存,可以利用缓存机制,自动释放这些空闲内存
  • Linux 会利用空闲内存加速磁盘读写(缓存机制),当内存不足时,这些缓存可以自动释放。因此,available** 列才是真实可用内存**

分析内存情况​

  • 如果 available 接近 total,说明内存充足;如果 available 接近 free,说明内存紧张

释放内存​

  • 释放内存可通过清理缓存、调整Swap、终止进程、重启进程
bash
# 查看所有端口占用
netstat -ano | findstr 8088
# 杀死进程
kill -9 <PID>

swap​

  • Swap 硬盘上的“临时内存”
  • 当 物理内存(RAM)不够用 时,Linux 会把一部分 暂时不用的内存数据 挪到磁盘上的 swap 里

为什么「不加 swap」会容易直接 Killed?

  • 在打包编译的时候,如果可用内存不足,中途可能被Killed掉,被系统直接杀进程
  • Linux 会优先用内存,swap 只在内存紧张时才用
  • 构建完成后,swap 会被慢慢释放
  • 加swap,服务器层兜底
  • swap 不是为了加速。 是为了防止系统在关键时刻“直接杀进程

内存优化​

  • 内存监控告警
    • 使用Zabbix或Nagios设置内存阈值告警
  • 硬件升级
    • 长期内存不足时,增加物理内存是最直接解决方案