你买的 VPS 不一定有 Swap 交换空间,如果没有,建议自己创建一个。
交换空间是硬盘上的一个空间,当物理 RAM 内存被用尽时,被紧急征用的空间。当一个 Linux 系统 RAM 内存耗尽,不活跃的内存页将会被移动到交换空间。交换空间可以是一个独立的交换分区,也可以是一个交换文件。
通常,交换文件大小依赖于你的系统有多少 RAM 内存。
- 少于2 GB RAM 内存的系统 – 2倍 RAM 内存的大小
- 2 到 8 GB RAM 内存的系统 – 同样 RAM 内存大小
- 大于 8 GB RAM 内存的系统 – 至少 4 GB 交换文件
仅仅只有 root 或者其他有 sudo 权限的用户能够激活 swap 文件。
创建 1GB 或 2GB 交换文件
创建一个用作交换文件的文件
sudo fallocate -l 1G /swapfile # 创建1G swap
sudo fallocate -l 2G /swapfile # 创建2G swap
如果 fallocate 工具在你的系统上不可用,或者你获得一个消息:fallocate failed: Operation not supported,使用下面的命令去创建交换文件。
dd if=/dev/zero of=/swapfile bs=1024 count=1048576 # 创建1G swap
dd if=/dev/zero of=/swapfile bs=1024 count=2097152 # 创建2G swap
设置文件权限到600
阻止常规用户读写这个文件
sudo chmod 600 /swapfile
在这个文件上创建一个 Linux 交换区
sudo mkswap /swapfile
激活交换区
sudo swapon /swapfile
想要持久化 打开/etc/fstab文件
nano /etc/fstab
/swapfile swap swap defaults 0 0
验证交换区是否已激活
sudo swapon --show
free -h
Swappiness 是一个 Linux 内核属性,用来定义系统将会有多频繁使用交换分区。它取值范围从 0 到 100。一个较低的取值可以在可能的情况下,尽量避免交换,而一个较高的值会使得内核更频繁地使用交换分区。在 Ubuntu 上,默认的 Swappiness 取值被设置成 60
。你可以通过输入下面的命令检查这个当前值。
cat /proc/sys/vm/swappiness
Swappiness 为 60 适合大部分 Linux 操作系统,对于生产服务器,你需要将这个值设置成更低。
sysctl vm.swappiness=10
想要将这个参数持久化,在重启时仍然起作用,将下面的内容附加到 /etc/sysctl.conf 文件。
nano /etc/sysctl.conf
vm.swappiness=10
移除一个交换文件
# 取消激活交换空间
sudo swapoff -v /swapfile
# 从/etc/fstab文件中移除交换文件条目
/swapfile swap swap defaults 0 0
# 删除实际的交换区文件
sudo rm /swapfile