优化小内存服务器性能:调整 Linux Swappiness 实战记录
› 社区话题 › bbPress 论坛系统(bbPress Forum System) › 优化小内存服务器性能:调整 Linux Swappiness 实战记录
- 该话题为空。

- 作者帖子
- 2025年9月28日 - 下午5:29 #1192
追光管理员《优化小内存服务器性能:调整 Linux Swappiness 实战记录》,内容涵盖 检测 → 分析 → 修改 → 应用 → 验证 的完整流程。
环境:Debian 12(内核 6.1.0-37-amd64)
物理内存:3722 MB
Swap 分区:1024 MB(已用 522 MB)
问题现象:系统响应偶有卡顿,free -h 显示 Swap 使用率超 50%🔍 一、问题检测:发现 Swap 被频繁使用
首先通过基础命令确认内存状态:
bash
root@NewVFX:~free -h
total used free shared buff/cache available
Mem: 3.6Gi 3.0Gi 654Mi 120Mi 1.0Gi 1.2Gi
Swap: 1.0Gi 522Mi 502Mi真实使用内存:3068 MB(82%)
Swap 已用:522 MB(51%)💡 虽然 Linux 会利用空闲内存做缓存,但 Swap 被大量使用 通常意味着物理内存不足,系统正在将不活跃页换出到磁盘,这会显著降低 I/O 性能。
进一步检查内核的 Swap 倾向性参数:
bash
root@NewVFX:~cat /proc/sys/vm/swappiness
60
默认值 60 表示系统较早、较积极地使用 Swap。对于内存仅 3.7GB 的小服务器来说,这显然不够友好。
🧠 二、原理分析:什么是 swappiness?
vm.swappiness 是 Linux 内核的一个可调参数,取值范围 0100:
值越高 → 越倾向于将内存页换出到 Swap
值越低 → 越倾向于保留内存,即使缓存较少| 场景 | 推荐值 |
| 桌面系统(内存充足) | 60(默认) |
| 服务器(内存 ≤ 4GB) | 10 |
| 高性能数据库服务器 | 1 |
| 完全禁用 Swap(不推荐) | 0 |📌 我们的服务器内存小、Swap 已用过半 → 应降低 swappiness,减少不必要的磁盘交换
✍️ 三、配置修改:写入 sysctl 配置文件
1. 编辑 /etc/sysctl.conf
bash
nano /etc/sysctl.conf在文件末尾添加:
conf
Reduce swap aggressiveness for low-memory server (3.7GB RAM)vm.swappiness=10
保存并退出(Ctrl+O → Enter → Ctrl+X)。
2. 应用新配置(无需重启)
bash
sysctl -p该命令会重新加载 /etc/sysctl.conf 中的所有设置。
✅ 四、验证生效:确认参数已更新
bash
root@NewVFX:~cat /proc/sys/vm/swappiness
10
✅ 输出为 10,说明配置已生效。
📊 五、后续观察:监控内存与 Swap 变化
调整后不会立即清空 Swap,但系统会在内存压力缓解时逐步将 Swap 数据换回内存。
持续监控命令:
bash
每2秒刷新一次内存状态watch -n 2 free -h
重点关注:
available 列(实际可用内存)
Swap 使用量是否缓慢下降🕒 经过数小时运行,Swap 使用量从 522MB 降至 380MB,系统响应明显更流畅。
🛠️ 六、补充建议(长期优化)
1. 排查内存大户:
bashps aux --sort=-%mem | head -n 10
2. 限制服务内存(如 PHP-FPM、MySQL):
MySQL:调低 innodbbufferpoolsize
PHP-FPM:减少 pm.maxchildren
3. 考虑升级内存:3.7GB 对现代 Web 服务已显吃紧
4. 避免盲目清空 Swap:swapoff -a 可能导致 OOM,慎用!📝 总结
通过 检测 → 分析 → 修改 → 应用 → 验证 五步流程,我们成功将 swappiness 从默认的 60 调整为 10,有效减少了小内存服务器对 Swap 的依赖,提升了系统响应速度。
关键经验:
Swap 不是“坏东西”,但过早使用 Swap 会拖慢系统。
合理配置 vm.swappiness,是优化低内存 Linux 服务器的低成本高回报手段。日期:2025年9月28日
适用系统:Debian / Ubuntu / CentOS 等主流 Linux 发行版
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。