为 Linux 服务器设置 swap 文件

原文为官方论坛上的 Create a swapfile for your Linux server,翻译于:2014-10-10

绝大多数云服务器提供商不会为他们提供的镜像设置 swap 文件。

如果您将 Discourse 部署在 2GB 内存的服务器上,swap 文件在技术上是不需要的,但是可能会在内存有压力时非常有用。有了 swap 文件,系统就不需要随机地用没有内存的错误关闭进程,取而代之的是只影响运行速度。

您可以在任何时候在您的服务器的命令行上设置 swap 文件。

创建一个 1GB 的 swap 文件

添加一个 swap 文件可以给 Discourse 在执行内存需求高的操作时有一个喘息的空间。1GB 的 swap 应该足够了,不过如果您要在最小内存的配置上运行 Discouse,您可能需要创建 2GB 的 swap 文件。

在您打开的 droplet 的命令行中,做如下的操作:

  1. 创建一个空的 swap 文件

     sudo install -o root -g root -m 0600 /dev/null /swapfile
    
  2. 填充 1GB 至文件名为 swapfile 的文件中

     dd if=/dev/zero of=/swapfile bs=1k count=1024k
    

    如果您想要 2GB

     dd if=/dev/zero of=/swapfile bs=1k count=2048k
    
  3. 告诉 Linux 这是 swap 文件:

     mkswap /swapfile
    
  4. 激活 swap

     swapon /swapfile
    
  5. 添加至文件系统表中,这样重启后系统才能找到它

     echo "/swapfile       swap    swap    auto      0       0" | sudo tee -a /etc/fstab
    
  6. 设置 swappiness 至 10,这样它只在急需内存时才会被使用

     sudo sysctl -w vm.swappiness=10
     echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf
    

建立一个 2GB 的 swap 文件的可供拷贝粘贴的脚本:

sudo install -o root -g root -m 0600 /dev/null /swapfile
dd if=/dev/zero of=/swapfile bs=1k count=2048k
mkswap /swapfile
swapon /swapfile
echo "/swapfile       swap    swap    auto      0       0" | sudo tee -a /etc/fstab
sudo sysctl -w vm.swappiness=10
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf