首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL几乎消耗了缓存中的所有内存?

MySQL几乎消耗了缓存中的所有内存?
EN

Server Fault用户
提问于 2011-12-29 18:12:12
回答 2查看 5.5K关注 0票数 1

我正在运行一个有24G内存的服务器。这里唯一运行的是配置为Master的MySQL服务器。

当我通过空闲-m检查内存时,我得到以下内容:

代码语言:javascript
复制
             total       used       free     shared    buffers     cached
Mem:         24158      24027        131          0        131      23050

大约23G在缓存中。这对我来说很重要。

我还在my.cnf中将缓存设置为0。

代码语言:javascript
复制
query_cache_size        = 0

如何检查究竟缓存了什么?另外,重新启动mysql并不能清除缓存。flush tables也无济于事。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2011-12-29 18:17:44

你在看两个不同的隐藏室。free -m告诉您操作系统用于磁盘缓存的内存数量,而不是MySQL用于数据库缓存的内存。操作系统应该为磁盘缓存使用尽可能多的内存--你为什么不想要尽可能大的缓存呢?如果应用程序需要内存,则总是可以使用该内存。有关缓存的Linux内存使用情况的详细讨论,请参见这里

票数 5
EN

Server Fault用户

发布于 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重新启动才有帮助。若要释放系统缓存,请使用命令:

代码语言:javascript
复制
echo 3 > /proc/sys/vm/drop_caches

http://linux-mm.org/Drop_缓存器

票数 -1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/345097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档