【Linux之轨迹】1核2G 内存不够怎么办?Swap 交换分区解决内存不足问题

需求

本人服务器买的是最便宜的 1核2G 服务器,最近在学新技术时,发现服务器经常死机,很纳闷
后来才注意到时内存问题,几个程序跑起来 2G 内存基本上拉满,这时候再启动其他程序时,就会导致服务器死机
但是又没钱买新服务器,也没钱升级,咋办呢
穷砸的我终于注意到 free 下边的 swap,一番查询后反复尝试后,终于掌握了 swap 的使用方法

首先看一下在没使用 swap 之前的内存状态:
在这里插入图片描述
空闲分区仅剩 78M,可供程序使用的仅剩 55M
这时候只需要再跑一个小小的程序,服务器立马就会死机(已经重启很多次啦)


正式使用 Swap

在此之前先简单了解以下 Swap:
在 Linux 系统中,SWAP(交换分区)类似于 Windows 系统的虚拟内存
系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到SWAP,以提高系统可用内存

所以我们要做的就是:在磁盘中指定一个文件,让系统将其当成虚拟内存使用
① 首先就是创建一块空间:

dd if=/dev/zero of=<文件路径> bs=<块的大小> count=<块的数量>

这里的文件路径可以任意,块的大小一般设置为 1M 也是任意,块的数量用于确认 swap 交换分区的大小

示例如下:指定了一块 512M 的交换分区(不过官方建议是:交换分区为物理内存的 1.5 倍较为合适,这里仅作演示)
dd if=/dev/zero of=/mnt/ice.swap bs=1M count=512

② 然后是将文件设置为交换分区文件,并启动

设置:	mkswap /mnt/ice.swap
启动:	swapon /mnt/ice.swap

③ 检查配置文件

如果在 /etc/rc.local 中有 swapoff -a 需要修改为 swapon -a
可以使用 cat /etc/rc.local 进行确认

④ 设置开机时自启动 Swap 分区

vim /etc/fstab

在最后面添加:
/mnt/ice.swap swap swap defaults 0 0

⑥ 设置 swappiness

该参数值用来确定系统对 Swap 分区的使用规则
当 swappiness 为 0 时,表示最大限度地使用物理内存,即在物理内存全部使用完之后,再使用 Swap 分区
当 swappiness 为 0-100 时,如为 20,则表示当物理内存剩下 20% 时,就使用 Swap
当 swappiness 为 100 时,表示积极使用 Swap 分区,系统会将内存中的数据及时置换到 Swap 分区

1)	临时设置(以 100 为例)
	echo 100 >/proc/sys/vm/swappiness

2)	永久设置(以 100 为例)
	vim /etc/sysctl.conf
	并在最后添加:vm.swappiness = 100

⑦ 效果查收
设置完毕后,在最开始第一张图的基础上,再启动一个程序,下边是效果图:
在这里插入图片描述
可以看到,Swap 分区用起来了!!!
服务器并没有崩掉,而是好好地跑着,空闲空间也维持在一个可以接受的值

虽说使用磁盘空间作为内存会影响程序运行的效率,但至少比服务器直接死机好太多了

⑧ 关闭分区

如果觉得内存又足够了不需要分区,可以将 swappiness 调低,又或者将该分区关闭,如下

1)	关闭分区
	swapoff <swap文件路径>

2)	取消自动挂载
	vim /etc/fstab
	将我们添加的自启动去掉

3)	free -m 确认分区已关闭

4)	设置 swappiness 参数
	echo 0 >/proc/sys/vm/swappiness(临时)
	vim /etc/sysctl.conf
	将我们设置的参数去掉(永久)

5)	最后删除不需要的分区文件
	rm -rf /mnt/ice.swap

⑨ 扩展分区

如果在使用的过程中,发现分区不够用了,可以对分区进行拓展
这也很简单,就是直接按步骤新建一个分区,启动就可以用了,下边是扩展了 1G 分区的状况:
在这里插入图片描述
可以看到分区变成了 1.5G(间接相当于我们有 3.5G 内存啦)
然后由于设置的 swappiness 参数是 100,所以系统很积极地使用这片分区(available 可供程序使用的腾出了三百多M)


汪洋不惧一泻,一泻可成汪洋(IceClean)

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒冰小澈IceClean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值