小内存 VPS Mysql error code 12

WordPress 跑一段时间后都会出现数据库连接错误,上去重启一下 mysql 就好了
今天终于忍不住了,上去看了一下 error log,最重要的一行

InnoDB: mmap(137363456 bytes) failed; errno 12

找到原因了,开始看怎么解决,VPS 只有 1G 内存,原来想着跑个 WordPress 还是绰绰有余的,没想到这么容易就挂了
加内存不太可能,本来就没什么人访问的地方,只是自己用来做个记录的,那就看 swap 了

开始操作,下面命令需要 root 权限
dd if=/dev/zero of=/swapfile bs=1M count=1024
这个命令就是生成一个 1G 的 swapfile 文件,用来做 swap
mkswap /swapfile
swapon /swapfile
运行完这个命令,虚拟内存就开启了
然后设置开机加载,不然下次重启就没有了
在 /etc/fstab 下写入配置:
/swapfile none swap defaults 0 0
解释一下这几个东西的意思,他对应的标签在下面

<file system> <mountpoint> <type> <options> <dump/pass>

<file system> 挂载设备,比如我们的 /swapfile

<mountpoint> 挂载点,告诉我们设备挂载到哪,虚拟内存不需要挂在另外的目录,就是 none

<type> 文件系统类型,我们的类型就是 swap

<options> 设置选项,默认 defaults,代表 rw,suid,dev,exec,auto,nouser和 async

<dump> 1 表示需要将 的内容备份,我们这个明显不需要,设置 0

<pass> 1 指定如何使用 fsck 来检查硬盘,0 则不检查,这个一般在 / 下写 1,如果不是 0,检查会按照数字从小到大检查,数字相同会同时检查

搞完后,可以用 free -m 看一眼是不是多出来了 swap 内存

搜索中参考的文章如下,感谢

ssh-and-bash-fork-cannot-allocate-memory-vps-ubuntu

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

One thought on “小内存 VPS Mysql error code 12

  1. sean xiao

    I benefited from the lot from reading this article, thank you so much for writing such great article, I will definitely follow your blog and read every article you write.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *