2018年04月6日网站服务器迁移完成……

mysql [ERROR] InnoDB: Cannot allocate memory for the buffer pool 处理记录

mysql 苏 demo 45℃
11.17的时候,服务器突然出现了故障报警
来个截图说明下:
数据库连接不上了,重试了重启数据库服务,提示找不到mysql(此时很慌,像是要凉的样子..)
查看mysql错误日志:
[ERROR] InnoDB: Cannot allocate memory for the buffer pool, 意思是说: 不能从缓存池中分配给innodb引擎需要的内存 。
这就很尴尬了,难道还内存不足? 
正常遇到这样的问题,就要开始检查MySQL的配置,是否是key_buffer_size或者 innodb_buffer_pool_size 大小的设置问题。
这里要引申一些关于mysql配置的说明:
innodb buffer pool 里面包含了很多的信息,例如:数据缓存( InnoDB数据页面 )、索引缓存( 索引数据 )、缓冲数据( 脏页(在内存中修改尚未刷新(写入)到磁盘的数据) )、
内部结构( 如自适应哈希索引,行锁 )等。 
innodb_buffer_pool_size 默认是128M, 最大值取决于CPU的架构。在32-bit平台上,最大值为2**32 -1,在64-bit平台上最大值为2**64-1。当缓冲池大小大于1G时,将innodb_buffer_pool_instances设置大于1的值可以提高服务器的可扩展性。
大的缓冲池可以减小多次磁盘I/O访问相同的表数据。在专用数据库服务器上,可以将缓冲池大小设置为服务器物理内存的80%。 
非专用数据库服务器,就要适当考虑自己服务器内存的情况了
由于这台机器购入的时间比较早(大致是15年11月份)加之资金不是特别的宽裕,配置上不是很高配。
于是赶紧检查下服务器的剩余内存情况。
使用命令:free -m
服务器的剩余可用内存真的不是很多,最近今年使用的用户在上升,但服务器配置一直未升级过 <流汗...>
ps: 
total:内存总数; 
used:已经使用的内存数; 
free:空闲的内存数; 
shared:当前已经废弃不用; 
buffers Buffer:缓存内存数; 
cached Page:缓存内存数。 
最终解决办法:
1.检测服务器使用内存 ps -aux | sort -k4nr | head -n 10 
 检测服务器cpu使用比较高的10个进程 ps -aux | sort -k3nr | head -n 10 
暂时kill掉进程 (楼主这里用的比较急,暂时reboot了..怂,哎~)
2.升级服务器配置 ,用了大概4年多的服务器,终于从双核4g 要升级到双核8g了(只升级了内存,哎,还不是因为 ,咳咳~)
内存资源释放后的服务器,重启mysql的服务进程,再监测,开始正常服务了。
这里仅做记录分享,感兴趣的小伙伴们可以在下方留言一起互动。
===============================
2019-11-24 00:09:27 更新, “升级内存了,过来嘚瑟下”
现在页面打开速度是:唰, 就开了~

打赏

转载请注明:苏demo的别样人生 » mysql [ERROR] InnoDB: Cannot allocate memory for the buffer pool 处理记录

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)