我正在运行一个有24G内存的服务器。这里唯一运行的是配置为Master的MySQL服务器。
当我通过空闲-m检查内存时,我得到以下内容:
total used free shared buffers cached
Mem: 24158 24027 131 0 131 23050大约23G在缓存中。这对我来说很重要。
我还在my.cnf中将缓存设置为0。
query_cache_size = 0如何检查究竟缓存了什么?另外,重新启动mysql并不能清除缓存。flush tables也无济于事。
发布于 2011-12-29 18:17:44
你在看两个不同的隐藏室。free -m告诉您操作系统用于磁盘缓存的内存数量,而不是MySQL用于数据库缓存的内存。操作系统应该为磁盘缓存使用尽可能多的内存--你为什么不想要尽可能大的缓存呢?如果应用程序需要内存,则总是可以使用该内存。有关缓存的Linux内存使用情况的详细讨论,请参见这里。
发布于 2012-01-04 15:46:24
这意味着几乎所有的内存都被内核用来缓存数据。您可能有几乎空闲的系统,所以这并不重要,但是要优化它,您应该看看mysql配置.
如果您认为您可以从查询缓存中获益,那么启用它并给它提供128 MB。然后,您可以签入mysql如何使用它。如果大多数情况下运行SELECT查询,而不是很多INSERT/UPDATE,则查询缓存可能对您有好处。它很少引起问题,所以您可以安全地保持启用它。
如果您使用的是MyISAM存储引擎,那么应该通过kay_buffer变量启用一些内存。如果使用InnoDB,一般建议将50-80%的可用内存分配给innodb_buffer_pool_size (如果这是专用mysql服务器的话)。Mysql和InnoDB比linux内核更清楚地知道要缓存什么。
对于释放mysql (read)缓存,我认为只有mysql重新启动才有帮助。若要释放系统缓存,请使用命令:
echo 3 > /proc/sys/vm/drop_cacheshttps://serverfault.com/questions/345097
复制相似问题