使用 DigitalOcean 有很长一段时间了,前几天在编译 PHP 的时候出现了进程被 killed 的状况,经过我的吐槽以及和别人交流后发现,是内存耗尽的缘故。其实是因为当时开着 MySQL 进程消耗了不少内存,后来觉得有必要手动添加一下 Swap(交换分区),这样以免以后再编译什么的时候进程被K 。
1、检查 Swap 空间 swapon -s 如果返回的信息概要是空的,则表示 Swap 文件不存在。
2、检查文件系统 df -hal 检查返回的信息,还剩余足够的硬盘空间即可。
3、创建并允许 Swap 文件 dd if=/dev/zero of=/swapfile bs=1024 count=512k
参数解读:
4、格式化并激活 Swap 文件 mkswap /swapfile 激活 Swap ,运行命令: swapon /swapfile 以上步骤做完,再次运行命令: swapon -s 你会发现返回的信息概要: Filename Type Size Used Priority /swapfile file 524284 0 -1
如果要机器重启的时候自动挂载 Swap ,那么还需要修改 fstab 配置。 /swapfile swap swap defaults 0 0 最后,赋予 Swap 文件适当的权限: chown root:root /swapfile chmod 0600 /swapfile
同时,我们还可以修改 Linux Swap 空间的 swappiness ,降低对硬盘的缓存。 cat /proc/sys/vm/swappiness 返回值60
我们可以调整 swappiness 的值到一个合适的参数,从而达到最优化使用 Swap 的目的。这里我们将其设为10。 sysctl vm.swappiness=10 但是这只是临时性的修改,在你重启系统后会恢复默认的60,要永久设置,还需要在 vim 中修改sysctl.conf: vi /etc/sysctl.conf 在这个文档的最后加上这样一行: # Search for the vm.swappiness setting. Uncomment and change it as necessary. vm.swappiness=10 输入:x,保存退出 vim 。 这样一来,Swap 分区重启后都会生效了。 (责任编辑:IT) |