MySQL不再使用指定的RAM

前几天我得到了一台运行CentOS 5.6 (64bit), with 12GB ddr3 ram, 4x SAS 15k rpm drives in RAID10的新机器CentOS 5.6 (64bit), with 12GB ddr3 ram, 4x SAS 15k rpm drives in RAID10 。 在这台机器上,我正在运行MySQL服务器版本: 5.1.39-maria-beta-ourdelta67-log ,我在以前的服务器上也使用过这个版本,结果很好。 这是我的my.cnf http://pastebin.com/kLfmbHSW

现在在今天早上,MySQL总是会使用我在my.cnf设置的指定RAM(大约是12GB的95%)。 在盯着MySQL之后,我会立即检查“顶部”,实际上95%的内存将被占用。

但现在,我重新启动MySQL后,我看到这一点,当我打“顶”。

 Mem: 12289856k total, 1884924k used, 10404932k free, 39660k buffers 

只有大约15%被使用。 这个数字有点慢,但之前总是用完所有的RAM。

什么可能导致这个?


更新:因为我重新启动MySQL,它已经慢慢地使用越来越多的内存,达到一个点,它占用了我所有的12GB,整个机器locking。 我必须重新启动Linux才能重新联机。 现在它又上了1.8GB,慢慢上升。 整个公羊pipe理似乎是坏的,因为它需要更多的内存,但从来没有冲洗它。

任何想法可能是什么原因造成的?

看来你正在运行一个beta版本,这往往是越野车。 但是,仅仅因为您指定了要使用的内存,并不意味着操作系统会分配它。 当MySQL要求操作系统的内存量为8GB时,它会得到一个本票:“是的,肯定会继续,你可以有8GB”。

然后,应用程序(在这种情况下,MySQL)pipe理自己的堆,它使用多less内存。 随着查询数量的增加,堆的使用量也随之增加。 这就是为什么你看到随着时间的推移增加。

你的服务器locking的原因可能来自许多原因,比如其他应用程序使用的内存比你想象的要多,或者只是在mysql中有一个错误(我倾向于不太可能)。

现在似乎已经解决了。 我不得不重build所有的索引,之后,MySQL的内存使用恢复正常。 虽然我已经对所有表和索引进行了mysql检查,但没有发现任何错误,重build索引确实解决了这个问题。

感谢所有的build议家伙!