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%,当然具体要结合实际情况而定,考虑别的存储引擎占用的内存,考虑服务器是不是还提供其他服务等等…