Mysql服务器(ubuntu)内存使用率在重启后变高。 2天后重新启动后进行交换

我有一个VM上的Mysql服务器

16核CPU

59 GB RAM

Ubuntu 13.10

Mysql版本是5.5.37

这是一个只用于报告目的的从数据库。

因为原来Mysql的innodb_buffer_pool_size(49G)那么大的服务器使用SWAP。 所以我将innodb_buffer_pool_size设置为35G,然后重新启动服务器(10/12)。 但是,RAM使用率在两天后逐渐变高,几乎是物理RAM的90%。 我认为这是没有道理的,因为innodb_buffer_pool_size是35G和其他的MySQL操作将不会使用这么多的RAM。

如果服务器有交换,我担心数据库性能。 但是我不知道如何阻止Mysql的内存使用。 我不明白为什么它逐渐使用这么多的RAM。

服务器在几天后的第二次重启(11/28)后开始交换

有人可以给我一些提示,以确保MySQL服务器不会逐渐具有较高的RAM使用率? 或者有什么我需要考虑的。 Ubuntu有一些会导致RAM消耗的设置吗?

非常感谢。

内存使用

Mysqlconfiguration:

https://gist.github.com/crokobit/7c329e48dc5ab234c0b1812248ff77cf

从my.cnf注释掉这些行:

sort-buffer-size = 4M read-buffer-size = 2M read-rnd-buffer-size = 2M join-buffer-size = 4M 

如果是专用的mysql服务器,请将缓冲池设置为高达50G,检查NUMA设置并进行相应的configuration。

将系统swappiness更改为1( 如果您使用的是较新的内核 )

升级到最新的MySQL版本,你的可能会受到一些内存泄漏错误的影响。

有没有魔术“使用更less的RAM开关”,所以通常系统pipe理的东西适用于了解正在发生的事情并采取适当的行动。 科学的方法是你的朋友

  • 安装监控
  • 收集数据(来自监控和其他工具)
  • 分析数据
  • 根据分析做出更改
  • 监视更改的效果
  • 根据需要冲洗并重复
  • logging最终的工作。

如果你自己pipe理不了,那就聘请一名专业人员(DBA /系统pipe理员),这个专业人员可能会比你自己想要做的更便宜。