实战学习Liunx(图文教程三十三)
本文最后更新于 2025-10-11,文章内容可能已经过时。
CentOS Stream 9 配置 Swap 空间解决内存不足问题
前言
当服务器物理内存(RAM)不足时,配置 Swap(交换空间)是防止系统崩溃的有效方法。Swap 是硬盘上的一块区域,当物理内存耗尽时,系统会将不常用的内存数据暂时移动到 Swap 中。虽然硬盘速度远低于内存,但 Swap 可以防止因内存不足导致的进程被强制终止(OOM Kill)或 SSH 连接断开等问题。
以下是详细的配置步骤,请确保理解每个命令的含义。
1. 检查当前 Swap 使用情况
在配置之前,先查看系统当前的 Swap 状态:
free -h
# 或使用以下命令查看更详细的信息
swapon --show
如果输出中 Swap
行的 total
显示为 0
或者 swapon --show
没有输出,说明当前系统未配置 Swap。
2. 创建并启用 Swap 文件
以下步骤将创建一个 1GB 的 Swap 文件。您可以根据需要调整大小(如将 1G
改为 2G
或 4G
)。
2.1 创建 Swap 文件
# 使用 fallocate 快速创建指定大小的文件(推荐)
sudo fallocate -l 1G /swapfile
# 如果 fallocate 不可用,可以使用 dd 命令(速度较慢)
# sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
2.2 设置正确的权限
为确保安全,Swap 文件应仅允许 root 用户访问:
sudo chmod 600 /swapfile
2.3 格式化文件为 Swap 格式
sudo mkswap /swapfile
2.4 启用 Swap 文件
sudo swapon /swapfile
2.5 验证 Swap 是否生效
再次运行 free -h
,确认 Swap
行显示新增加的空间。
3. 设置永久生效
以上启用 Swap 的命令在重启后会失效。要使其在系统重启后自动启用,需要将 Swap 文件信息添加到 /etc/fstab
文件中。
3.1 编辑 fstab 文件
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
或者手动编辑文件(使用 nano
或 vim
):
sudo nano /etc/fstab
在文件末尾添加一行:
/swapfile none swap sw 0 0
4. 优化 Swap 使用行为
4.1 调整 swappiness 参数
swappiness
值(范围 0-100)决定了系统使用 Swap 空间的倾向性:
-
低值(如 10-30):系统倾向于尽量使用物理内存,只在真正需要时使用 Swap。这对于小内存服务器是推荐设置,有助于平衡性能和稳定性。
-
高值(如 60-80):系统更积极地使用 Swap。
检查当前值:
cat /proc/sys/vm/swappiness
临时调整(立即生效):
sudo sysctl vm.swappiness=30
永久调整:
echo 'vm.swappiness=30' | sudo tee -a /etc/sysctl.conf
5. Swap 空间大小建议
根据服务器的物理内存大小,Swap 空间的推荐配置如下:
对于内存很小的服务器(如 1GB 或更少),可以适当增加 Swap 大小(如 2GB-4GB)以提供更多缓冲空间。
6. 测试 Swap 效果
您可以手动创建一个内存消耗较大的操作来测试 Swap 是否正常工作:
# 此命令会尝试分配 500MB 内存,观察系统是否使用 Swap
sudo dd if=/dev/zero of=/dev/null bs=1M count=500
同时,在另一个终端窗口运行 free -h
观察内存和 Swap 使用情况的变化。
7. 重要注意事项
-
性能影响:Swap 使用硬盘空间,速度远低于物理内存。频繁使用 Swap(称为 "swapping")会导致系统性能显著下降。Swap 的主要目的是防止系统崩溃,而非提升性能。
-
监控 Swap 使用:定期检查 Swap 使用情况,如果发现 Swap 使用率持续较高,应考虑增加物理内存或优化应用程序的内存使用。
# 查看内存和 Swap 使用概况 free -h # 查看更详细的内存信息 cat /proc/meminfo
-
删除 Swap 文件(如需):
# 禁用 Swap sudo swapoff /swapfile # 从 /etc/fstab 中删除对应行 sudo nano /etc/fstab # 删除 Swap 文件 sudo rm /swapfile
总结
通过以上步骤,您已经在 CentOS Stream 9 上成功配置了 Swap 空间,这应该能缓解因内存不足导致的 SSH 连接断开问题。请记住,Swap 是临时解决方案,长期而言,考虑升级服务器物理内存或优化运行的服务才是根本之道。
提示:完成配置后,建议重启服务器以确保所有设置正确生效。
- 感谢你赐予我前进的力量