当前位置:首页 > 服务端 > MySQL 8.0 OOM(Out Of Memory)问题优化

MySQL 8.0 OOM(Out Of Memory)问题优化

1、什么叫OOM

全名称为:Out Of Memory

内存溢出已经是软件开发历史上存在了近40年的“⽼⼤难”问题。在操作系统上运⾏各种软件时,软件所需申请的内存远远超出了物理内存所承受的⼤⼩,就叫内存溢出。
内存溢出产⽣原因多种多样,当内存严重不⾜时,就很容易出现OOM

 

2、产生OOM原因

主要原因就是内存不足,其中performance_schema 功能在带给我们更多性能监控手段的同时,也占用了太多的内存

 

3、OOM优化

优化一:innodb_buffer_pool_size 设置为最小128M,建议设置内存的75%-80%

innodb_buffer_pool_size 是MySQL内存占用的大户,首先拿它开刀,设置为最小的128M。

优化二:关闭performance_schema

mysql> SHOW VARIABLES LIKE 'performance_schema';
+--------------------+-------+
| Variable_name | Value |
+--------------------+-------+
| performance_schema | ON |
+--------------------+-------+
1 row in set (0.03 sec)

performance_schema 8.0版本默认设置为 ON,建议关闭,即关闭performance_schema 中的各项性能监控

关闭之后,MySQL 8.0 运行一周多时间,没有发生 OOM。performance_schema 功能在带给我们更多性能监控手段的同时,也占用了太多的内存,看来它是引起 MySQL OOM 的主要原因。

MySQL Bug 列表中有一个关于 performance_schema 的 Bug,它会占用大量内存,导致 MySQL 进程 OOM,所以如果内存不大,可以考虑将其关闭,或者升级到最新的 MySQL 版本。

优化三:调低各种buffer,cache参数

各种buffer, cache 参数,根据实际情况进行更改,只要不经常OOM,能稳定运行就好。

比如:

  • innodb_log_buffer_size
  • innodb_sort_buffer_size
  • join_buffer_size
  • key_buffer_size
  • myisam_sort_buffer_size
  • sort_buffer_size
  • binlog_cache_size
优化四:优化SQL

低效的 SQL ,尤其是执行计划中带 filesort 的 SQL,在高并发下,会占用大量的内存。可以通过添加索引,优化表结构,优化 SQL 语句,优化业务逻辑等等,减少慢 SQL 的产生,进而减少内存的占用

 

作者:Linux运维-Friend
来源链接:https://www.cnblogs.com/linuxmysql/p/16268447.html

版权声明:
1、Java侠(https://www.javaxia.com)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaxia.com/server/124936.html

标签: out of memory
分享给朋友:

“MySQL 8.0 OOM(Out Of Memory)问题优化” 的相关文章