本文最后更新于 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改为 2G4G)。

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

或者手动编辑文件(使用 nanovim):

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 空间的推荐配置如下:

物理内存大小

推荐 Swap 大小

说明

≤ 2GB

物理内存的 2 倍

例如 2GB 内存配 4GB Swap

2GB - 8GB

等于物理内存大小

例如 4GB 内存配 4GB Swap

> 8GB

至少 4GB

根据具体应用需求调整

对于内存很小的服务器(如 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. 重要注意事项

  1. 性能影响​:Swap 使用硬盘空间,速度远低于物理内存。频繁使用 Swap(称为 "swapping")会导致系统性能显著下降。Swap 的主要目的是防止系统崩溃,而非提升性能。

  2. 监控 Swap 使用​:定期检查 Swap 使用情况,如果发现 Swap 使用率持续较高,应考虑增加物理内存或优化应用程序的内存使用。

    # 查看内存和 Swap 使用概况
    free -h
    
    # 查看更详细的内存信息
    cat /proc/meminfo
  3. 删除 Swap 文件(如需)​​:

    # 禁用 Swap
    sudo swapoff /swapfile
    # 从 /etc/fstab 中删除对应行
    sudo nano /etc/fstab
    # 删除 Swap 文件
    sudo rm /swapfile

总结

通过以上步骤,您已经在 CentOS Stream 9 上成功配置了 Swap 空间,这应该能缓解因内存不足导致的 SSH 连接断开问题。请记住,Swap 是临时解决方案,长期而言,考虑升级服务器物理内存或优化运行的服务才是根本之道。

提示​:完成配置后,建议重启服务器以确保所有设置正确生效。