前言

最近购买了好几个小鸡准备拿来做CDN加速使用,但是内存都是512M的。担心在使用Nginx可能会崩溃,所以要适当的调一下SWAP分区,让应用更稳定的运行。其实就是把硬盘上的一部分空间来做swap(windows也有这一项技术:虚拟内存),将系统内的非活跃内存换页到swap,来提高系统的可用内存。

创建swap分区

1
2
3
4
5
6
7
8
9
10
#新建一个文件专门用于swap分区
dd if=/dev/zero of=/swapfile bs=1M count=2024
#也可以用fallocate这种方法来创建
#fallocate -l 2G /swapfile

#设置swap交换区
mkswap /swapfile

#更改swap权限
chmod 600 /swapfile

启用分区

1
2
3
4
5
6
7
8
9
10
11
12
13
#启用swap交换分区
sawpon /swapfile

#查看内存状态
free -m

#设置开机自启
vim /etc/fstab

#在/etc/fstab添加下面这段内容
/swapfile swap swap defaults 0 0
或者直接输入
echo "/data/swap swap swap defaults 0 0" >> /etc/fstab

查看内核参数 调vm.swappiness参数

1
2
3
4
5
6
7
8
9
10
11
cat /proc/sys/vm/swappiness
sysctl -a | grep swappiness
#临时修改
sysctl -w vm.swappiness=50

#永久修改
vi + /etc/sysctl.conf
# 添加
vm.swappiness=50
## 让配置生效
sysctl -p

这里需要简单说明下,在Linux系统中,可以通过查看/proc/sys/vm/swappiness内容的值来确定系统对SWAP分区的使用原则。当swappiness内容的值为0时,表示最大限度地使用物理内存,物理内存使用完毕后,才会使用SWAP分区。当swappiness内容的值为100时,表示积极地使用SWAP分区,并且把内存中的数据及时地置换到SWAP分区。注:若想永久修改,则编辑/etc/sysctl.conf文件
默认值为 0,表示需要在物理内存使用完毕后才会使用 SWAP 分区。
我们这里设置的50,就表示当物理内存少于50%时便使用交换分区。

关闭或删除swap分区

1
2
3
4
5
6
#关闭swap分区
swapoff /data/swap
# swapoff -a >/dev/null

#删除swap分区
rm -f /swapfile