Skip to content

mysql 内存占用高排查

  • 最近发现 mysql 的内存占用一直在逐渐增加,一开始重启完是 400 MB 左右,后面几天时间内就涨到了 2.4 G,然而跟着一些博客排查mysql内部却没发现什么问题。这里记录最终有效的操作。

glibc 内存碎片

  • 部分博客提到了 mysql 默认使用的 glibc 存在内存碎片问题,导致内存并未归还给系统,因此逐渐升高。
  • 我们可以手动触发其回收,但注意,生产环境谨慎使用:
sh
gdb --batch --pid `pidof mysqld` --ex 'call malloc_trim(0)'
  • 这个的效果很明显,直接从 2.4 g 降低到 1.5 g
  • 也有博客提到可以更换使用 jmalloc 解决。

关闭 PFS

  • PFS(performance schema)是 mysql 的性能监控工具,但它也会占用内存和额外的 CPU。
  • 可以修改 /etc/mysql/my.cnf 文件:
txt
[mysqld]
performance_schema = OFF
  • 然后重启 mysqld :
sh
sudo systemctl restart mysql
  • 我这边已经关闭,等过一段时间看看效果。