InnoDB: mmap(137363456 bytes) failed; errno 12 解决方法

2019-11-22 13:01:39  阅读 45 次 评论 1 条

今天用LNMP一键安装包(lnmp.org)用命令“lnmp mysql start"或“/etc/init.d/mysql”启动mysql的时候启动不了,报了如下错误:

Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/var/iZbp1fsaxsfwrm9091mcc6Z.pid).

 

当我查看mysql错误日志的时候(LNMP一键安装包日志路径是:/usr/local/mysql/var/),给我反映了具体如下ERROR错误:

InnoDB: mmap(137363456 bytes) failed; errno 122019-06-08 09:08:05 14335 [ERROR] InnoDB: Cannot allocate memory for the buffer pool2019-06-08 09:08:05 14335 [ERROR] Plugin 'InnoDB' init function returned error.2019-06-08 09:08:05 14335 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.2019-06-08 09:08:05 14335 [ERROR] Unknown/unsupported storage engine: InnoDB2019-06-08 09:08:05 14335 [ERROR] Aborting

中文翻译

InnoDB:mmap(137363456字节)失败; errno 122019-06-08 09:08:05 14335 [错误] InnoDB:无法为缓冲池分配内存2019-06-08 09:08:05 14335 [ERROR]插件'InnoDB'init函数返回错误。2019-06-08 09:08:05 14335 [ERROR]插件'InnoDB'注册为STORAGE ENGINE失败。2019-06-08 09:08:05 14335 [错误]未知/不支持的存储引擎:InnoDB2019-06-08 09:08:05 14335 [ERROR]中止

InnoDB: mmap(137363456 bytes) failed; errno 12

 

原因:

经过千辛万苦,最后找到了原因,原因是内存不够用,内存不足造成的。

 

解决方法

因为由于是内存不够用的问题,也可以说你的服务器配置过低,需要考虑服务器配置升级的问题。

 

1、查看服务器的免费剩余内存

可以用"free -m"命令来查看自己服务器的内存:

$ free -m

free -m

从上图中可以得到,免费的内存只有大概300M的样子;而mysql默认给InnoDB分配的内存就是128M。所以说,内存的确是不足。

注意:有时候服务器免费内存太少,如果你又没有用过什么,不妨重启一下服务器系统。

 

3、修改mysql配置文件my.cnf,添加如下设置参数:把mysql给InnoDB分配的内存设置为8M

innodb_buffer_pool_size = 8M

 

4、现在,我再用命令“lnmp mysql start"或“/etc/init.d/mysql”启动mysql,结果出现了“SUCCESS!”,说明成功了。

 

注意:如果你此次启动成功了后,等一会儿,mysql又被突然关闭了,你又需要重启,经常反反复复。这说明你服务器的配置真的是太垃圾了,支撑不了你现有的业务了,需要考虑升级,或者做一个CDN,减少数据库的请求压力。


本文地址:http://daiguohui.com/post/8.html
版权声明:本文为原创文章,版权归 daiguohui 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

评论列表

  1. 首码网
    首码网  @回复

    做该做的事,走该走的路,不退缩,不动摇。无论多难,也要告诉自己:再坚持一下!别让你配不上自己的野心,也辜负了曾经经历的一切。