【问题标题】:Percona 5.6 high memory usagePercona 5.6 高内存使用
【发布时间】:2013-10-24 15:29:45
【问题描述】:

我不确定 stack 是否适合问这个问题,但我最近从 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 的物理内存和超过 1.5 的虚拟内存?

这是 mySQL 中的错误还是我的服务器的问题?

【问题讨论】:

  • 使用 Pmap 我找到了罪魁祸首,发生了 2 个巨大的 ANON 内存分配,我不知道为什么 00007fb73b65c000 403088K rw--- [ anon ] 00007fb731c2a000 155748K rw--- [ anon ]弄清楚为什么要分配这个内存?

标签: mysql linux percona


【解决方案1】:

发现在 mysql 5.6 中 performance_schema 默认是开启的。在 5.5 及之前的版本中默认禁用它。自 5.6.6 起默认启用它

performance_schema=off 到我的配置文件解决了这个问题。

我想任何没有内存来运行 performance_schema 的人都不会使用它。

这可能也会影响 mysql 5.6.6 的其他发行版。

【讨论】:

  • 这是 MySQL 5.6 特有的。有关 MySQL 5.7 及更高版本的信息,请参见此处:mysqlserverteam.com/…
【解决方案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+ 并删除它解决了问题。

【讨论】:

    【解决方案3】:

    在 CentOS 上帮助我的是更改内存分配器:

    yum install jemalloc-devel
    

    并添加到 my.cnf:

    [mysqld_safe]
    
    malloc-lib = /usr/lib64/libjemalloc.so.1
    

    【讨论】:

      猜你喜欢
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 2013-07-03
      • 1970-01-01
      • 2017-06-10
      • 2015-05-03
      • 1970-01-01
      • 2016-09-26
      相关资源
      最近更新 更多