前不久在Amazon购买了一台EC2服务器运行WordPress,配置为双核CPU,内存1G。运行了一段时间后,发现mysql经常崩溃。检查mysql的error.log发现,崩溃前最后一条日志是:
160328 16:50:26 InnoDB: Completed initialization of buffer pool 160328 16:50:26 InnoDB: Fatal error: cannot allocate memory for the buffer pool 160328 16:50:26 [ERROR] Plugin 'InnoDB' init function returned error. 160328 16:50:26 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 160328 16:50:26 [ERROR] Unknown/unsupported storage engine: InnoDB 160328 16:50:26 [ERROR] Aborting
因为网站访问量比较大,推测可能是系统内存不足导致的。使用下面的命令查看了一下,发现apache已经使用了60%多的内存(总内存为1G)。
$ ps -ylC apache2 | awk '{x += $8;y += 1} END {print "Total (MB): "x/1024; print "Average (MB): "x/((y-1)*1024)}' Total (MB): 622.996 Average (MB): 14.8332
apache、mysql都是吃内存的大户,1G屋里内存显然不够用了。使用swapon查看交换文件状态:
$ sudo swapon -s
Filename Type Size Used Priority
OMG,竟然没有。。。那就创建一个。
先创建一个4G的文件:
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=4000 4000+0 records in 4000+0 records out 4194304000 bytes (4.2 GB) copied, 5.12 s, 1203 MB/s
然后把它转变为swap文件: 继续阅读为Ubuntu Linux创建Swap分区
阅读:143