mysql突然连接失败,重启后也报报错,然后去/var/log/mysql/查看error.log,报错信息如下:
InnoDB: mmap(137363456 bytes) failed; errno 12
2018-12-05 10:24:23 721 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2018-12-05 10:24:23 721 [ERROR] Plugin 'InnoDB' init function returned error.
2018-12-05 10:24:23 721 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-12-05 10:24:23 721 [ERROR] Unknown/unsupported storage engine: InnoDB
2018-12-05 10:24:23 721 [ERROR] Aborting
解决方法:
修改mysql配置信息
到/etc/mysql/my.cnf中改如下选项:
innodb_buffer_pool_size=50M
保存再重新运行service mysql start就成功了。
原因:
应该是mysql没有配置好,php程序访问量稍微大一些,分配给mysql的内存就满了,然后就锁死了,
Innodb 存储引擎的缓存机制和 MyISAM 的最大区别就在于 Innodb 不仅仅缓存索引,同时还会缓存实际的数据。所以,完全相同的数据库,使用 Innodb 存储引擎可以使用更多的内存来缓存数据库相关的信息,当然前提是要有足够的物理内存。innodb_buffer_pool_size 参数用来设置 Innodb 最主要的 Buffer(Innodb_Buffer_Pool)的大小,也 就是缓存用户表及索引数据的最主要缓存空间,对 Innodb 整体性能影响也最大。这个参数设置成内存的50%-80%,当然具体要结合实际情况而定,考虑别的存储引擎占用的内存,考虑服务器是不是还提供其他服务等等…
本文解决了一个关于MySQL连接失败的问题,错误信息显示为InnoDB无法分配内存。通过调整my.cnf文件中的innodb_buffer_pool_size参数,将值从默认减少到50M,成功解决了内存溢出导致的服务中断。
725

被折叠的 条评论
为什么被折叠?



