股票

Linux(Debian7)中SWAP交换分区的设置

最近网站总被攻击,瞬间产生大量访问,虽然限制apache的访问数是10个,但是由于VPS的内存只有512M,10个进程一满,最为占用内存最大的进程 mysql 还是被系统 kill了。查了一下系统平时内存占用,发现就剩可怜的几兆了,一旦来个别的什么进程,这不是等挂么?

Linux(Debian7)中SWAP交换分区的设置

然后就看到下面的swap数,竟然是0,上网一查,这就是windows的虚拟内存,关于swap的作用,有这样的说法:
简单来说,SWAP 交换分区是用来存放内存溢出来的数据。我们可以将内存想像成一个盆子,运行程序时的数据都被作为水放在内存这个盆子当中。如果你运行太多的应用程序,导致水过多而(内存这个)盆子已经装不下时,就会将多于部分的水装到 SWAP 交换分区当中。
从理论上讲,SWAP 交换分区增大了可以使用的内存空间,但事实并非如此。因为内存的数据交换速度是非常快的,而 SWAP 交换分区是把物理磁盘当成内存的载体,也就是说:虽然使用 SWAP 可以让我们运行更多或更大的应用程序了,但物理磁盘的数据交换速度远比不上物理内存,因此也就可能造成运行性能的下降。而对硬盘特别是 SSD 磁盘的频繁读写,也会造成磁盘寿命的缩短和性能下降。
优点已经看到,缺点呢,在我这里反而不是问题了。因为VPS用的是固态硬盘,速度没问题;而VPS也是租的,寿命暂时不考虑了^_^
于是,分配吧,下面讲下具体操作方法:

1,检查当前分区情况(使用 -m 或者 cat /proc/swaps)

Linux(Debian7)中SWAP交换分区的设置

2,增加交换分区文件大小

Linux(Debian7)中SWAP交换分区的设置

如果检查没有swap,就需要增加,决定新交换文件的大小,将大小乘以1024来判断块的大小。比如大小为200M的交换文件,块大小为204800,count就等于想要的块的大小。
如果检查有swap,需要先停止(sudo swapoff /swap);再进行创建。

3,使用mkswap设置交换文件,即相当于格式化新建立的交换分区。

Linux(Debian7)中SWAP交换分区的设置

4,启用、停止交换分区文件

Linux(Debian7)中SWAP交换分区的设置

5,修改文件 /etc/sysctl.conf 对swappiness 值进行编辑,增加

  1. vm.swappiness=10  

该值主要表示我们希望Linux从内存与SWAP分区进行数据交换的强度,值为10表示当内存占用到 90% 时开始将数据写入 SWAP。Ubuntu 的默认 swappiness 值为 60,这表示当内存占用到 40% 时开始将数据写入 SWAP。

6,修改文件 /etc/fstab,增加

  1. /swap swap swap defaults 0 0  

以便在开机时自动启动。
参考文章:Linux中的SWAP交换分区

打赏
原文链接:,转发请注明来源!

发表评论