本文最后更新于 2020年4月11日。
最近使用一个比较有名的VPS,获得了50美金的使用金,因此可以免费用几个月。
但是本来标有1G的主机可用只有0.8G,本来选择的数据库和php版本较高,需要的内存比较大,现在内存反而小了,自然是不行。尽管我已经使用了docker节省了系统资源,开始跑起应用来用将近0.6G明显变卡,还经常因为内存不足报错。
有点失望。
当我用free -h查看内存时想到了虚拟内存技术,于是寻找虚拟内存设置方法,成功开启1G虚拟内存,不再因为内存不足报警了。
具体方法如下:
首先要知道linux可以文件或者分区来当作虚拟内存,我是以文件当作虚拟内存的。
一、如果你也没用过这种技术,先做准备工作:
1、首先查看当前的内存和swap 空间大小(默认单位为k, -m 单位为M):
free -m
2、查看swap信息,包括文件和分区的详细信息
swapon -s或者cat /proc/swaps
如果都没有,我们就需要手动添加交换分区。注意,OPENVZ架构的VPS是不支持手动添加交换分区的。
添加交换空间有两种选择:添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用, 则添加交换文件。
二、增加swap交换文件
1、使用dd命令创建一个swap交换文件
dd if=/dev/zero of=/home/swap bs=1024 count=1024000
这样就建立一个/home/swap的分区文件,大小为1G。
2、制作为swap格式文件:
mkswap /home/swap
3、再用swapon命令把这个文件分区挂载swap分区
swapon /home/swap
我们用free -m命令看一下,发现已经有交换分区了。
但是重启系统后,swap分区又变成0了。
4、为防止重启后swap分区变成0,要修改/etc/fstab文件
vi /etc/fstab
在文件末尾(最后一行)加上
/home/swap swap swap default 0 0
这样就算重启系统,swap分区还是有值。
如果不需要了,可以删除swap交换文件
1、先停止swap分区
/sbin/swapoff /home/swap
2、删除swap分区文件
rm -rf /home/swap
3、删除自动挂载配置命令
vi /etc/fstab
这行删除
/home/swap swap swap default 0 0
这样就能把手动增加的交换文件删除了。
注意:– 增加删除swap的操作只能使用root用户来操作。– 装系统时分配的swap分区貌似删除不了。– swap分区一般为内存的2倍,但最大不超过2G
三、使用分区来做SWAP(虚拟内存)
1.、使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区)
2、 使用 mkswap 命令来设置交换分区:
mkswap /dev/sdb2
3、 启用交换分区:
swapon /dev/sdb2
4.、写入/etc/fstab,以便在引导时启用:
/dev/sdb2 swap swap defaults 0 0
如果不需要了,可以删除swap交换分区
1、先停止swap分区
/sbin/swapoff /dev/sdb2
2、删除自动挂载配置命令
vi /etc/fstab
这行删除
/dev/sdb2 swap swap defaults 0 0
这样就能把手动增加的交换分区删除了。