zoukankan      html  css  js  c++  java
  • mysql_5.6内存过高问题解决

    MySQL 5.6安装完之后,每过一段时间就会莫名其妙挂掉。而且还很难启动。非要重启服务器,才能拉起mysql。

    后来分析是由于mysql启动后内存过高,跑一段时间就会由于内存不足而被杀死。

    今天分析了这个问题,原因及结果如下。

    我安装的版本是5.6.35。它默认占用内存达400多M,  而原来使用的5.0 只有30M。

    最开始我尝试调整这些参数:

    innodb_buffer_pool_size = 64M 

    key_buffer_size = 8M

    query_cache_size = 16M 

    tmp_table_size = 16M 

    key_buffer_size = 32M

    调整后内存是下降一点点。但还是400M以上。

    最后查出5.6默认的设置如下

    performance_schema_max_table_instances 12500

    table_definition_cache 1400 #打开表的缓存

    table_open_cache 2000  #表定义的缓存

    其中 table_open_cache 是mysql每打开一个表,都会读入一些数据到table_open_cache 缓存中。当mysql在这个缓存中找不到相应的信息时,才会去磁盘上直接读取。多说一句,增加 table_open_cache ,会增加文件描述符,当把 table_open_cache 设置为很大时,如果系统处理不了那么多文件描述符,那么就会出现客户端失效,连接不上。

    而我现在打开表的数目是63个,完全用不了那么多。

    mysql> show status like "open%";

    +--------------------------+-------+

    | Variable_name            | Value |

    +--------------------------+-------+

    | Open_files               | 16    |

    | Open_streams             | 0     |

    | Open_table_definitions   | 70    |

    | Open_tables              | 63    |

    | Opened_files             | 147   |

    | Opened_table_definitions | 0     |

    | Opened_tables            | 0     |

    +--------------------------+-------+

    修改

    performance_schema_max_table_instances=600

    table_definition_cache=400

    table_open_cache=256

    重启mysql

    service mysqld restart

    发现mysql内存下降到81M。不错。^^

    感谢链接:http://nosqldb.org/p/55ceaac5c3f8a8336f3bf727

  • 相关阅读:
    Marketcetera中TradeBase所依赖的RoR的gems
    单点登录的实现[转]
    在服务中调用外部的窗体程序出现的问题(转载)
    [转]c#创建access查询
    [转]解决技术问题的一些个人经验
    JSF kick start [转]
    An existing Marketcetera MySQL Server 5.0 instance has been detected. Marketcetera requires it's own instance of MySQL
    编写你自己的单点登录(SSO)服务(转载)
    CAS与LDAP整合的实现[转]
    ASP.NET 配置文件纵横谈(三)
  • 原文地址:https://www.cnblogs.com/zhangyabin---acm/p/7467426.html
Copyright © 2011-2022 走看看