Java321技术网

 找回密码
 立即注册
搜索
热搜: centos
查看: 7419|回复: 0
打印 上一主题 下一主题

mysql启动报错cannot allocate memory for the buffer pool处理

[复制链接]

126

主题

126

帖子

815

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
815
跳转到指定楼层
楼主
发表于 2017-10-15 22:58:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天启动mysql服务器时失败了。去/var/log/mysql/查看error.log,报错信息如下:
160123 22:29:26 InnoDB: Initializing buffer pool, size = 200.0M
InnoDB: mmap(214630400 bytes) failed; errno 12
160123 22:29:26 InnoDB: Completed initialization of buffer pool
160123 22:29:26 InnoDB: Fatal error: cannot allocate memory for the buffer pool

原来是无法给innodb分配足够的内存,
我的阿里云服务器是最低配的,总共就500M内存,于是到/etc/mysql/my.cnf中改了如下选项:


用阿里云的vps用作blog服务器,系统很稳定,已经100多天一直运行正常,大概从上个月开始发现blog的mysql会有时挂掉,会收到短信通知。之前没太追究,重新启动了mysql解决的。今天上午又收到短信,已经第三次了。

查了一下日志,三次基本都是一样的:

解决方法:
1) 在 /etc/mysql/my.cnf 的 mysqld 下增加下面一句:

innodb_buffer_pool_size = 64M
还要设置一下swap分区,因为我的vps是没有swap分区的,通过fdisk -l 和 1mount 看不到swap的信息,需要手动添加一下。

2) 添加swap分区的步骤:

2.1) dd if=/dev/zero of=/swapfile bs=1M count=1024
2.2) mkswap /swapfile
2.3) swapon /swapfile
2.4) 添加这行: /swapfile swap swap defaults 0 0 到 /etc/fstab
目前已经设置了swap分区,并重启了mysql,后续观察一下看看还会不会出现吧。

参考:http://stackoverflow.com/questio ... tes-failed-errno-12

补充,经过近2个月观察,没再发生down掉的情况。


回复

使用道具 举报

QQ|Archiver|手机版|小黑屋|Java321技术网   蜀ICP备15030946号-1

GMT+8, 2024-4-29 21:24 , Processed in 0.055172 second(s), 21 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表