服务器内存
free命令
- free 命令显示系统内存的使用情况
- available可用内存
- total总内存
- 若available / total 持续低于20%,表明内存紧张
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可用内存
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、终止进程、重启进程
# 查看所有端口占用
netstat -ano | findstr 8088
# 杀死进程
kill -9 <PID>
swap
- Swap 硬盘上的“临时内存”
- 当 物理内存(RAM)不够用 时,Linux 会把一部分 暂时不用的内存数据 挪到磁盘上的 swap 里
为什么「不加 swap」会容易直接 Killed?
- 在打包编译的时候,如果可用内存不足,中途可能被Killed掉,被系统直接杀进程
- Linux 会优先用内存,swap 只在内存紧张时才用
- 构建完成后,swap 会被慢慢释放
- 加swap,服务器层兜底
- swap 不是为了加速。 是为了防止系统在关键时刻“直接杀进程
内存优化
- 内存监控告警
- 使用
Zabbix或Nagios设置内存阈值告警
- 使用
- 硬件升级
- 长期内存不足时,增加物理内存是最直接解决方案