一键给 VPS 添加虚拟内存 swap
注意:VPS 的内存如果过小 (<2G),建议设置一下 SWAP,一般为内存的 1-1.5 倍即可,可以让系统运行更流畅!
设置 SWAP 可以用脚本:
wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh
怎么配置 swap 可以让它的性能更好呢?
- 尽量使用 swap 分区,相对于 swap 文件来说,分区肯定是连续的物理磁盘空间,而 swap 文件有可能不是
- 将 swap 分区和系统所在的分区放在不同的磁盘上,这样就不会和系统盘抢同一个磁盘的 I / O 带宽
- 如果有多块磁盘的话,可以在每个盘上创建一个 swap 分区,并且将它们的优先级设置的一样,这样内核就会平均的访问这些 swap 分区,性能相当于原来的 N 倍 (这里 N 是磁盘的数量)
不过话又说回来了,如果频繁的访问 swap 的话,怎么优化 swap 都没用,跟内存比还是低几个数量级,性能还是下降的厉害,如果不频繁访问 swap 的话,优化 swap 又有啥意义呢? 所以其实优化 swap 性能的实际意义不大,这里了解一下就好。
配置 swappiness
有时我们桌面环境确实配置了比较充裕的内存,并且也配置了 swap 空间,这个时候就希望尽量减少 swap 空间的使用,避免对系统性能造成影响,Linux 早就帮我们考虑到这种情况了,在 2.6 内核中,增加了一个叫做 swappiness 的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度。这个参数的取值范围是 0~100,0 告诉内核尽可能的不要将内存数据移到 swap 中,也即只有在迫不得已的情况下才这么做,而 100 告诉内核只要有可能,尽量的将内存中不常访问的数据移到 swap 中。
Ubuntu 的 desktop 和 server 的默认配置都是 60(可能会随着版本变化),对于桌面环境来说,界面的响应速度直接关系到系统的流畅程度,如果内存比较充裕的话,可以将这个值设置的小一点,这样就尽可能的把数据留在内存中,从而唤醒后台界面程序会更快一些,Ubuntu desktop 建议将该值设置为 10,当然大家可以根据 swap 空间的实际使用情况,任意调整这个参数,直到自己满意的水平为止。对于服务器来说,主要性能衡量标准是整体的处理能力,而不是具体某一次的响应速度,能把更多的内存用来做 I /O cache 可能效果更好,所以 Ubuntu server 建议保持 60 的默认值。
- 查看当前系统中 swappiness 的值
cat /proc/sys/vm/swappiness
- 修改当前系统中 swappiness 的值
sudo sysctl vm.swappiness=10
vm.swappiness = 10
cat /proc/sys/vm/swappiness 10
上面通过 sysctl 修改的 swappiness 值在系统重启后会失效,要想重启后继续生效,需要修改配置文件 /etc/sysctl.conf,将下面这行修改成 10,如果文件中找不到这行的话,在文件末位加上这行就可以了
vm.swappiness=10