我不确定堆栈是否适合提出这个问题,但我最近从5.5升级到Percona 5.6并且我的内存使用率暴涨!
这是来自PS:
mysql 4598 0.0 29.5 1583356 465312 ? Sl Oct17 9:07 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib6
我正在使用专用的VSS
我的服务器只有一个ram的演出...根据PS,这个唯一的内存使用率仅为30%?
我的配置中的ram设置小于此值,当我运行MySQLTuner时,我得到:
[OK] Maximum possible memory usage: 338.9M (22% of installed RAM)
那么我如何使用近500MB的物理内存和超过一半的虚拟内存?
这是mySQL中的错误还是我服务器的错误?
答案 0 :(得分:8)
发现在mysql 5.6中,performance_schema默认开启。它在5.5之前和之前默认禁用。它自5.6.6起已默认启用
performance_schema = off到我的配置文件修复了这个问题。
我想任何没有内存运行performance_schema的人都不会使用它。
这可能会影响mysql 5.6.6的其他发行版。
答案 1 :(得分:2)
我遇到了这个问题,并在MySQL.ini中修复了一些(增加的)缓存值,将问题排除在外。
table_definition_cache - 设置为400
从“http://bugs.mysql.com/bug.php?id=68287”开始讨论
是的,有基于table_open_cache和table_definition_cache和max_connections的阈值,超过阈值会导致RAM使用量大幅增加。阈值的工作原理是首先确定服务器大小是小,中还是大。
小:所有三个都与默认值相同或更小(2000,400,151)。 大:三者中的任何一个都是默认值的两倍多。 中:其他。
从记忆中。我的设置为2000+并且将它排除在问题之外。
答案 2 :(得分:0)
在CentOS上帮助我的是改变内存分配器:
yum install jemalloc-devel
并添加到my.cnf:
[mysqld_safe]
malloc-lib = /usr/lib64/libjemalloc.so.1