Linux SWAP 配置笔记
简介:SWAP 是 Linux 系统的虚拟内存机制,是服务器运维核心知识点。本文从定义、核心作用、实操创建、参数调整、删除销毁、LNMP生产环境专属配置、避坑注意事项全方位讲解,所有命令可直接复制执行,适合建站服务器、云主机运维学习与落地,可直接用于博客归档。
一、SWAP 核心定义
Linux SWAP 俗称交换分区/交换文件,本质是磁盘空间模拟物理内存(虚拟内存)。
系统会在物理内存(RAM)资源不足时,将内存中暂时闲置、低优先级的进程数据,转移到磁盘的 SWAP 空间中,释放稀缺的物理内存,供当前活跃程序使用,避免系统因内存溢出直接崩溃、进程被 OOM 机制强制杀死。
SWAP 存在两种实现形式:
- Swap 分区:独立磁盘分区,传统服务器方案,读写性能略优,灵活性差,无法随时扩容缩容。
- Swap 文件:磁盘上的普通文件,云服务器主流方案,无需分区、灵活可调、运维成本低,LNMP 建站环境首选。
核心区别:物理内存读写速度是磁盘的数百倍,SWAP 仅作为应急兜底机制,不能替代物理内存,频繁使用 SWAP 会导致服务器 IO 飙升、网站卡顿、响应超时。
二、SWAP 核心作用
1. 内存溢出兜底
LNMP 环境下,Nginx、MySQL、PHP-FPM 突发并发会瞬间占用大量内存,SWAP 可临时缓冲内存压力,避免服务器直接宕机、网站502报错。
2. 休眠/挂起支持
Linux 系统休眠功能需要将内存数据全部存入 SWAP,无 SWAP 则无法使用休眠模式。
3. 稳定系统进程
防止系统 OOM Killer 机制误杀核心服务(MySQL、Nginx),保障建站服务持续运行。
4. 闲置内存释放
系统会将长期不访问的后台进程、缓存数据移入 SWAP,腾出物理内存给高频业务进程。
三、SWAP 状态查看(基础实操)
所有操作适配 CentOS、Ubuntu、Debian 全系列系统,可直接复制执行。
# 查看内存、SWAP 整体占用情况
free -h
# 查看详细 SWAP 设备、大小、使用状态
swapon --show
# 查看系统 SWAP 启用倾向参数
cat /proc/sys/vm/swappiness
# 查看缓存回收压力参数
cat /proc/sys/vm/vfs_cache_pressure四、SWAP 创建实操(Swap 文件方案,推荐)
生产环境、LNMP 服务器优先使用 Swap 文件,无需重装分区、随时扩容,以下以创建 4G SWAP 为例。
1. 创建 SWAP 文件
# 快速创建4G空文件(推荐,速度快)
fallocate -l 4G /swapfile
# 若fallocate报错,使用dd命令兼容所有系统
dd if=/dev/zero of=/swapfile bs=1M count=40962. 配置权限(必须步骤)
SWAP 文件权限必须为600,防止恶意用户读取篡改内存数据。
chmod 600 /swapfile3. 格式化为 SWAP 格式
mkswap /swapfile4. 启用 SWAP
swapon /swapfile5. 设置开机自动挂载
编辑 fstab 文件,永久生效,防止重启失效。
vi /etc/fstab在文件末尾添加一行:
/swapfile none swap sw 0 0保存退出后,可执行mount -a 校验配置是否无误。
五、SWAP 参数调整(核心优化)
SWAP 优化核心为两个参数:swappiness、vfs\_cache\_pressure,直接影响 LNMP 网站运行流畅度。
1. swappiness(SWAP 使用倾向)
取值范围 0-100,数值越小,系统越不倾向使用 SWAP。
- 默认60:内存剩余40%时开始使用SWAP,建站环境过于激进
- 推荐10:仅内存严重不足时启用SWAP,兼顾稳定与性能
- 0:极致禁止SWAP,仅大内存服务器适用
临时生效(重启失效)
sysctl vm.swappiness=10永久生效(生产环境必配)
vi /etc/sysctl.conf添加/修改:
vm.swappiness=10刷新配置生效:
sysctl -p2. vfs\_cache\_pressure(缓存回收倾向)
默认100,控制系统回收目录、文件缓存的力度。LNMP环境建议调低,保留网站文件缓存,提升访问速度。
永久配置:
vi /etc/sysctl.conf
vm.vfs_cache_pressure=50
sysctl -p六、SWAP 删除销毁实操
当服务器内存升级、或 SWAP 占用过高需要重建时,执行删除操作。
1. 临时关闭 SWAP
# 关闭指定swap文件
swapoff /swapfile
# 关闭所有swap
swapoff -a2. 删除开机挂载配置
编辑 /etc/fstab,删除 /swapfile none swap sw 0 0 这一行。
3. 删除 SWAP 文件
rm -f /swapfile七、LNMP 建站环境专属配置方案
LNMP 环境核心服务为 Nginx、MySQL、PHP-FPM,对内存、IO 敏感,禁止默认配置,专属优化方案如下:
1. SWAP 大小适配标准
- 内存 ≤2G:SWAP=2G(小内存服务器必备,防止网站502)
- 内存 2G-8G:SWAP=内存同等大小(通用建站配置)
- 内存 8G-64G:SWAP=4G-8G(兜底即可,无需过大)
- 内存 ≥64G:可关闭SWAP,或保留2G极小兜底
2. 专属参数优化(生产必配)
# /etc/sysctl.conf 完整LNMP优化参数
vm.swappiness=10
vm.vfs_cache_pressure=50
# 优化TCP与内存适配(配套LNMP)
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_tw_reuse=13. 核心优化逻辑
LNMP 网站运行依赖大量文件缓存、数据库缓存,调低 swappiness 可避免频繁置换内存数据,调低缓存回收压力,让系统优先保留网站业务缓存,大幅降低页面加载延迟、502 错误概率。
八、生产环境注意事项(避坑重点)
1. SWAP 不能替代物理内存
网站频繁卡顿、IO 高负载时,优先升级物理内存,而非加大 SWAP。SWAP 仅做应急兜底,无法支撑高并发业务。
2. 机械硬盘(HDD)尽量禁用 SWAP
HDD 读写速度慢、寻道时间长,开启 SWAP 会直接导致服务器卡死、数据库查询超时,SSD 云主机可正常使用。
3. 禁止 SWAP 滥用
若 swapon --show 显示 SWAP 持续高占用,说明内存资源不足,需优化 PHP-FPM、MySQL 内存参数,或升级内存。
4. 特殊文件系统不支持 SWAP
btrfs、zfs 文件系统部分子卷不支持 swapfile,会导致挂载报错,此类环境建议使用独立 swap 分区。
5. 权限严格控制
swapfile 权限必须为600,权限过大会被系统判定不安全,导致 SWAP 挂载失败。
6. 重启校验配置
修改 fstab 后务必执行 mount -a 校验,避免配置错误导致服务器开机失败。
九、总结
1. SWAP 是 Linux 虚拟内存兜底机制,核心作用是防止内存溢出导致服务宕机,不用于提升性能;
2. 云主机 LNMP 环境优先使用 Swap 文件,灵活易维护,适配所有建站场景;
3. 生产环境核心优化:swappiness=10、vfs\_cache\_pressure=50,大幅适配网站业务;
4. 运维核心原则:SWAP 高占用 = 内存不足,优先升级硬件/优化服务,不扩容 SWAP。
