怎样在Ubuntu下设置交换内存

在云主机上更新PHP的composer的时候, 一直报错, 内存不够. htop看了一下, 一共才900多M的内存, 跑了很多软件, 已经占用了700M了.
没办法, 不能为了软件升个级就再买CPU吧. 只好使用交换内存了.

记录如下:

  1. 检查系统是否打开了交换内存. 一般没有.

    1
    sudo swapon -s
  2. 创建一个交换文件, 用于交换, 大小自定. 我设的是物理内存的2倍. 文件地址随意.

    1
    2
    sudo fallocate -l 2G /swapfile
    chmod 600 /swapfile
  3. 现在让这个文件可以用作交换内存.

    1
    sudo mkswap /swapfile
  4. 打开交换内存

    1
    sudo swapon /swapfile
  5. 现在再检查一下交换内存是否打开(参见步骤1)

  6. 如果想要永久生效, 就是重启也有效, 需要设置 /etc/fstab 文件

    1
    echo '/swapfile none swap sw 0 0' >> /etc/fstab
  7. 设置swappiness参数, 它表示在什么情况下使用交换内存. 取值在0-100之间, 表示在启用交换内存前, 物理内存空间的占比.
    那么:

  • 0: 表示关闭交换内存
  • 1: 最小数量的交换内存, 但并不完全关闭
  • 10: 比较推荐的值, 这样保证系统有足够的内存, 并且能保证性能.
  • 100: 积极的使用交换内存. (没有使用过这个值)

设置方法:

1
2
3
4
sudo vi /etc/sysctl.conf

add content
vm.swappiness=10

exit vim, 现在使它生效.

1
sudo sysctl -p

到这一步, 已经完成了交换的设置.