![图片[1]_Linux Swap 分区管理实战:内存不够时如何及时的抢救_鲁小班博客](https://www.ip31.com/wp-content/uploads/2026/04/20260424203551219-image.png)
total used free shared buff/cache available
Mem: 3.9G 2.1G 800M 12M 1.0G 1.5G
Swap: 2.0G 0B 2.0G
sudo swapon /dev/sda2
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
验证一下:
cat /etc/fstab | grep swap
看到刚才那行就对了。
调整 Swap 使用策略(关键!)
Linux 有个参数叫 swappiness,控制”多积极使用 Swap”。
- 值越大(最大 100):越积极用 Swap
- 值越小(最小 0):尽量不用 Swap
# 查看当前值
cat /proc/sys/vm/swappiness
# 默认通常是 60,对服务器来说太高了!
# 改为 10(内存实在不够才用 Swap)
sudo sysctl vm.swappiness=10
# 永久生效,加到 /etc/sysctl.conf
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.conf
💡 经验值:桌面电脑可以 60,服务器建议 10 甚至 1,数据库服务器直接 0。
Swap 使用场景与避坑
✅ 适合用 Swap 的场景
- 内存偶尔峰值:平时够用,偶尔 burst 一下
- 低成本服务器:512M/1G 小内存机器
- 开发测试环境:不追求极致性能
❌ 不适合用 Swap 的场景
- 数据库服务器:MySQL/Redis 用 Swap 会卡到怀疑人生
- 高并发 Web 服务:响应时间会飙升
- 实时性要求高的场景:比如直播推流、即时通讯
🚨 踩过的坑
https://wxa.wxs.qq.com/tmpl/pn/base_tmpl.html
坑 1:Swap 满了导致系统卡死
# 定期检查 Swap 使用率
free -h | grep Swap
# 如果 used 接近 total,赶紧排查哪个进程吃内存
top -o %MEM
坑 2:禁用 Swap 后忘记删配置
# 临时禁用
sudo swapoff -a
# 记得从 fstab 里删掉对应行,不然重启会卡启动!
sudo nano /etc/fstab
坑 3:Swap 文件权限不对
# 必须是 600,否则系统拒绝启用
ls -l /swapfile
# 应该看到:-rw------- 1 root root
进阶:多个 Swap 设备优先级
可以搞多个 Swap 设备,设置不同优先级:
# 查看当前优先级swapon --show --priority
# 启用时指定优先级(数字越大优先级越高)
sudo swapon /swapfile --priority 100
sudo swapon /dev/sdb2 --priority 50
这样系统会优先用优先级高的,满了再用低的。
一键检查脚本
![图片[2]_Linux Swap 分区管理实战:内存不够时如何及时的抢救_鲁小班博客](https://www.ip31.com/wp-content/uploads/2026/04/20260424204848148-image.png)
写了个小脚本,丢到服务器随时检查:
#!/bin/bash
echo "=== Swap 状态检查 ==="
free -h | grep -E "Mem|Swap"echo "
"echo "=== Swappiness 值 ==="
cat /proc/sys/vm/swappiness
echo ""
echo "=== Swap 设备详情 ==="
swapon --show
保存为 check_swap.sh,加执行权限 chmod +x check_swap.sh,随时跑一下。
总结一下
- 小内存服务器建议配 Swap,2G 内存配 2G Swap 比较合适
- swappiness 调到 10 以下,别让它太积极
- 数据库服务器慎用 Swap,宁可加内存
- 定期检查 Swap 使用率,别等满了才发现
- fstab 配置要谨慎,错了会卡启动
感谢您的来访,获取更多精彩文章请收藏本站。









暂无评论内容