• 展开微博窗口
  • QQ:52619941
  • 微信:cnmemory
  • 展开分类目录
  • 还没有账号?

Memory

启用swap来应对临时的内存不足问题

前段时间在一台小内存服务器上使用composer更新第三方类库时出现了内存不足的问题,以至于触发了OOM异常,使得composer进程被kill,无法完成更新。
通过free -h查看,测试服务器上并没有启用swap交换分区

当内存不足时,系统会将部分数据交换到swap空间上。类似win上的虚拟内存

OK,那就让我们启用swap。

  1. 创建交换分区文件
mkdir /data
touch /data/swapfile
  1. 分配交换分区容量
dd if=/dev/zero of=/data/swapfile bs=1M count=2048

/dev/zero是linux设备上一个特殊的文件,当你读它的时候,它会提供无限的空字符(NULL, ASCII NUL, 0x00),其中的一个典型用法是用它提供的字符流来覆盖信息,另一个常见用法是产生一个特定大小的空白文件,上面的命令就是此处的第二种用法。

  1. 设置交换区
mkswap -f /data/swapfile
  1. 启用交换分区
swapon /data/swapfile

OK,现在你可以使用swapon -s来查看已经启用的交换分区。

顺带一提,文中标题我用了临时两个字,是因为swap既有好处也有坏处。有了swap我们可以不用过于担心某些进程大量占用内存时触发OOM Killer,但是,如果长时间内存暴涨不断触发swap交换分区工作,可能会导致磁盘IO过高,造成服务器卡死。

所以,启用swap还是需要分情况处理,该加内存就加内存呗~

码字很辛苦,转载请注明来自雨林寒舍《启用swap来应对临时的内存不足问题》

评论