当前位置:首页 > 内存 > 正文

mysql内存参数

  • 内存
  • 2024-06-01 12:25:03
  • 333

一、如何增大MYSQL内存查看/proc/meminfo
提示:
大内存页也称为传统大页、大页内存等,这里我们使用标准内存页,这有助于Linux管理虚拟内存。“大内存页面”可以定义最大页面大小为1GB。在系统启动时,可以使用“大内存页”为应用程序保留一些内存。这部分内存已被占用,永远不会从内存中卸载。。它将保留在那里,直到配置发生更改。(详细说明见下面链接官方解释)
那么这么大的一页内存分配给谁了呢?
检查:
shell>/proc/sys/vm/hugetlb_shm_group
27
shell>id27
uid=27(mysql)gid=27(mysql)groups=27(mysql)
巨大的tlb_shm_group文件中充满了用于指示大页面内存的用户组ID。在这里你可以看到这是MySQL组ID。既然是为MySQL设计的,为什么呢。free等于total,mysql实际上只使用了20GB多的内存?
原来MySQL有一个专门启用大内存页的设置。在MySQL中,大内存页称为大页。
检查MySQL配置文件
发现配置文件中确实有大页配置,但处于禁用状态。
经与公司确认,MySQL大页面确实很早就启用了,但后来被禁用了。经过一番究,我们基本上得出了一个结论。
结论
之前这个环境支持20000个大页内存,每个页大小为2MB,占用40GB内存供MySQL使用,MySQL也包含了大页,但后来就不再支持了其使用情况。,我只是禁用了MySQL端的bigpage选项,但实际上并没有更改主机上的bigpage内存配置。所以实际上主机上仍然有20,000个大页内存,但它们已经消失了。use这部分已经闲置了很长时间,不能被其他程序使用。
所以当MySQL使用大约20GB内存时,所有主机的内存都会饱和,然后在某些情况下触发OOM导致mysqld关闭,但是主机有一个mysqld_safe守护进程,所以它再次被拉出,我们看到文章开头的随机连接失败的现象。