给Linux新加或者修改Swap交换内存(Amazon EC2 )

在亚马逊的主机搭建我的个人博客一个多月了,最近安装了一些插件,以来丰富我的博客的功能,另外好几个插件是统计和管理型的,这样让我对自己对小站有更详细的了解。 然而也就装了三四个插件后,网站访问变得出奇慢,基本上可以说是无响应。这个时候申请ssh登陆服务器也会超时,如果之前登陆过的话,每输入任何一个字母都等很久,多数命令并不能执行返回cannot allocate memory的错误。起初我以为是cpu或者网络传输到达免费额度了,所以数据传不过来或者cpu计算能力不够。一直觉得1G内存用来跑一个网站绰绰有余了,就没考虑内存出问题,可是其他问题查了一个遍都正常,那只能是内存用完了。实际测试确实是这个问题。 这是我都个人小站待机时候都内存状态,没有任务也没有客人访问都时候,物理内存就用掉900多M,可见不添加虚拟内存毫无疑问会卡死。 最好的解决方法就是增加内存,可是这同时增加支出。。。我作为学生本来就用的amazon免费资源,所以这条路走不通了。 第二个很好的方法就是增加交换内存。把硬盘的一部分拿出来,当内存不够用的话可以暂时存在这里做个缓冲。亚马逊免费套餐也良心的很,硬盘最大可以达到30G而且是SSD,之前传输文件速率能达到71M/S,已经相当棒了。所以我着手开始给我的虚拟机增加虚拟内存。一般来说服务器提供商默认是不设置虚拟内存的,所以我们添加后应该能大幅度提高使用性能。 有两种方法: 使用一个文件作为交换内存 新增一个分区作为交换分区 第一种方法很方便也是我喜欢用的,并且也有利于之后调整虚拟内存的大小,只需要更改那个文件大小就可以了。看下边的步骤。 下边步骤都需要root权限,su切换到root或者用sudo 首先如果你设置过或者默认有虚拟内存,需要先停用掉: swapoff -a 然后新建一个文件用来当作交换文件用: dd if=/dev/zero of=/swapfile bs=1M count=1024 这个命令生成一个在根分区的空文件,大小为1G,可以根据个人喜好更改地点和大小。总大小为bs*count:块大小与块数量都乘积。 mkswap /swapfile swapon /swapfile 运行这两个命令就开启了虚拟内存。 下一步设置开机自动加载,不然刚才的虚拟内存只对本次有效: 在/etc/fstab 写入下边的配置: /swapfile none swap defaults 0 0 或者编辑/etc/rc.local文件,加入以下内容(具体根据自己的文件路径): swapon /swapfile 这样用文件作为交换分区就设置好了,如果以后需要更改大小就很简单,先swapoff -a停用掉交换分区,把之前的swapfile删掉再重新生成一个满意大小的文件就可以了,下边开启以及设置开机自启动命令相同。 可以用free -m 查看一下,是不是多出了swap内存。 第二种方法设置一个swap磁盘分区: 首先是停掉现有的swap分区:swapoff -a 用fdisk命令(例: fdisk /dev/xvda1)对磁盘进行分区,添加swap分区,新建分区,在fdisk中用“t”命令将新添的分区id改为82(Linux swap类型),最后用w将操作实际写入硬盘(没用w之前的操作是无效的)。 mkswap /dev/xvda2 格式化swap分区,这里的xvda2要看您加完后p命令显示的实际分区设备名 swapon …

给Linux新加或者修改Swap交换内存(Amazon EC2 ) Read More »