启用swap来应对临时的内存不足问题
前段时间在一台小内存服务器上使用composer更新第三方类库时出现了内存不足的问题,以至于触发了OOM异常,使得composer进程被kill,无法完成更新。
通过free -h
查看,测试服务器上并没有启用swap交换分区
当内存不足时,系统会将部分数据交换到swap空间上。类似win上的虚拟内存
OK,那就让我们启用swap。
- 创建交换分区文件
mkdir /data
touch /data/swapfile
- 分配交换分区容量
dd if=/dev/zero of=/data/swapfile bs=1M count=2048
/dev/zero是linux设备上一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00),其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件,上面的命令就是此处的第二种用法。
- 设置交换区
mkswap -f /data/swapfile
- 启用交换分区
swapon /data/swapfile
OK,现在你可以使用swapon -s
来查看已经启用的交换分区。
顺带一提,文中标题我用了临时两个字,是因为swap既有好处也有坏处。有了swap我们可以不用过于担心某些进程大量占用内存时触发OOM Killer,但是,如果长时间内存暴涨不断触发swap交换分区工作,可能会导致磁盘IO过高,造成服务器卡死。
所以,启用swap还是需要分情况处理,该加内存就加内存呗~
码字很辛苦,转载请注明来自雨林寒舍的《启用swap来应对临时的内存不足问题》
2019-01-02
开发笔记
评论