如何诊断导致 InnoDB 空间不足的原因?

如何诊断导致 InnoDB 空间不足的原因?

该网站几乎每天都会频繁宕机,并且使用 Digitalocean VPS

根据我在 DO 论坛上得到的一些建议,我运行了 mysqltuner,并将 innodb 缓冲池大小增加到 341M,将 innodb 日志文件大小增加到 64M

从那时起,该网站瘫痪的次数减少了,但仍然会时不时地出现这种情况,就像昨晚一样。

有很多“InnoDB:无法为缓冲池分配内存”mysql 错误日志 - pastebin

我已经分配了交换空间,并且也运行了 netstat、vmstat 等,一切似乎正常。

但显然我的内存不足,正如日志所显示的。我该如何诊断导致我的服务器内存不足的原因?是插件故障、apache 还是其他原因导致的问题,而不仅仅是升级 droplet?

答案1

您可能想尝试一下 MySQL Workbench,它是免费的,并且对于像这样的任务非常有用。

答案2

问题似乎是 MYSQL 没有获得足够的内存来增加缓冲池大小。设置参数时需要谨慎,如果值太高,则可能会出现服务器占用问题。InnoDB 缓冲池大小应在低连接环境中设置为可用 RAM 的 50%,在高连接环境中设置为 30%。您可以在此处查看有关参数的更多信息https://www.skynats.com/blog/mysql-server-optimization/

答案3

2020-07-15T21:33:55.734143Z 0 [注意] InnoDB: 初始化缓冲池,总大小 = 384M,实例 = 1,块大小 = 128M 2020-07-15T21:33:55.748097Z 0 [错误] InnoDB:mmap(137428992 字节)失败;错误号 12 2020-07-15T21:33:55.751593Z 0 [错误] InnoDB:无法分配内存对于缓冲池

你有多少 RAM?要么是非常很小,或者有大量 RAM 被其他东西占用。

相关内容