栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

mysql致命错误:无法为缓冲池分配内存

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql致命错误:无法为缓冲池分配内存

TLDR;

Mysql由于内存不足而无法重新启动,请检查是否配置了适当的交换文件。

没帮助吗 如果这不是您的问题,那么继续研究的更多合格问题是:

  • mysqld服务每天在ec2服务器上停止一次
  • https://askubuntu.com/questions/422037/optimising-mysql-settings-mysqld-running-out-of-memory

背景

我在EC2上建立的第一个系统上确实遇到了这个问题,该系统的特点是那里托管的wordpress网站有时会因“建立数据库连接错误”而崩溃。

日志显示与OP发布的错误相同的错误。我对错误的了解(已删除时间戳)是:

  • 内存不足错误:
    InnoDB: Fatal error: cannot allocate memory for the buffer pool
  • 没有足够的内存,InnoDB无法启动
    [ERROR] Plugin 'InnoDB' init function returned error. [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB [ERROR] Aborting
  • mysqld正在关闭,在这种情况下,这实际上意味着无法重新启动!
    [Note] /usr/sbin/mysqld: Shutdown complete

检查

/var/log/syslog
并搜索 mysql 产量:

Out of memory: Kill process 15452 (mysqld) score 93 or sacrifice childKilled process 15452 (mysqld) total-vm:888672kB, anon-rss:56252kB, file-rss:0kBinit: mysql main process (15452) killed by KILL signalinit: mysql main process ended, respawningtype=1400 audit(1443812767.391:30): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=21984 comm="apparmor_parser"init: mysql main process (21996) terminated with status 1init: mysql main process ended, respawninginit: mysql post-start process (21997) terminated with status 1<repeated>

注意:如果错误是在cron旋转日志之前发生的,则可能需要压缩并搜索存档的日志。

就我而言,根本问题是我忽略了配置交换文件。

您可以通过运行查看是否配置了一个

free -m

total used free shared buffers cached Mem: 604340 587364 16976 0 29260 72280-/+ buffers/cache: 485824 118516 Swap: 0 0 0

在上面的示例中,交换:0表示没有交换文件。

有关设置的教程:

  • https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
  • https://help.ubuntu.com/community/SwapFaq

注意,更大不一定代表更好! 从Ubuntu指南:

“收益递减”表示, 如果您需要更多的交换空间而不是RAM大小的两倍
,则最好添加更多的RAM,因为硬盘驱动器(HDD)的访问速度比RAM的访问速度慢约10³,因此大约 需要1秒钟,突然花了15分钟以上
!快速固态硬盘(SSD)上还有一分钟多的时间…


关于这里的其他答案…

The InnoDB memory heap is disabled

这实际上不是错误,只是表明InnoDB正在使用系统的内部内存分配器而不是其自身的内存。默认值为yes / 1,并且可以接受生产。

根据文档,此命令已弃用,并将在5.6以上的MySQL版本中删除(并且我假设为MariaDB):

http://dev.mysql.com/doc/refman/5.6/en/innodb-performance-
use_sys_malloc.html

感谢:Ruben Schade评论

[Note] Plugin 'FEDERATED' is disabled.

关于禁用FEDERATED的消息不是错误。这只是意味着FEDERATED引擎在您的mysql服务器上未开启。默认情况下不使用。如果您不需要它,则无需关心此消息。

参见:https :
//stackoverflow.com/a/16470822/2586761



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411680.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号