MySQL使用猥琐的内存量

使用my-small.cnf在Ubuntu 9.10服务器上设置MySQL服务器,但仍然使用了超过100%的内存(Burst)。

热门报道: 替代文字http://anyhub.net/file/top.png

109MB VIRT并不多。 (为了比较,我的数据库服务器现在正在使用约900mb VIRT + 500MB RSS)

VIRT将包括诸如映射文件之类的东西。 你的应用程序没有使用94mb的交换(109mb(virt) – 15mb(rss)),这个VIRT的一大块是映射数据库表,磁盘二进制文件,库和其他磁盘上的数据文件。

如果这个值是你所关心的,你可以通过调整my.cnf中的参数来调整它。 请记住,每个空闲的连接使用一点内存,所以调整MaxConnections以在主机上使用最佳的内存量将是一种黑色艺术。

从您的主屏幕我注意到你没有任何交换。 请记住,linux会智能地pipe理交换,并且会将那些没用的页面换出来,为磁盘caching腾出空间,这对系统性能有很大的帮助。 零交换通常被认为是不好的:如果因为你的系统被禁用掉了,那么你的系统的内存就会被大大缩小,而不交换将会损害性能,或者更快地击中OOM杀手。

可能你只是没有足够的内存开始。

这里不是一个MySQL专家,但是我在SQL Server上做了很多数据库的工作。 数据库可能是内存密集型的,可能是IO密集型的。 对于低端虚拟机来说,这两者都不是好兆头。 100MB的进程留下的数据库caching内存不是很多 – 如果你拿出进程本身,加上一些计划caching等。

有一个机会,你将不得不进入更多的内存 – 根据数据库的使用,我们可能在这里谈论千兆字节。 所有这些都是为了避免IO。 一个不,这不是MySQL / SQL Server特定的 – 数据库尝试caching以避免IO,因为IO是SLOW。 数据库在RAM和IO上存在。 我知道数据库使用超过16GB的内存只是为了避免caching;)

而且 – 对不起 – 一个100MB的内存数据库进程不使用淫秽的内存(在:大)…它可能会唱低贱的内存。

主要问题是:你有多less数据? oyu和它做什么?