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

mysql_5.6内存过高问题解决的更多相关文章

  1. 用windbg+sos找出程序中谁占用内存过高,谁占用CPU过高(转载)

    原文地址: http://www.cnblogs.com/Lawson/archive/2011/01/23/1942692.html 很早看到windbg+sos方面的知识,一直没仔细学习,也许因为 ...

  2. Java服务器内存过高&CPU过高问题排查

    一.内存过高 1.内存过高一般有两种情况:内存溢出和内存泄漏 (1)内存溢出:程序分配的内存超出物理机的内存大小,导致无法继续分配内存,出现OOM报错 (2)内存泄漏:不再使用的对象一直占据着内存不释 ...

  3. linux Java项目CPU内存占用高故障排查

    linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对 ...

  4. ElasticSearch CPU和内存占用高的优化记录

    公司最近使用ElasticSearch作为数据报表汇总引擎.上线三个月累计数据800万,但是今天突然大面积出现查询超时,上服务器查看服务运行情况,发现cpu使用率高达300% mem 使用率也到了90 ...

  5. linux中Java项目占用cpu、内存过高时的排查经历

    一.使用top命令查看占用高资源的java项目的进程ID(pid): top 二.查看该进程中的线程所占用资源的情况:top -Hp pid 三.查看该线程对应的16进制:printf %x 1112 ...

  6. 解决svchost占用内存过高问题

    摘抄自:https://jingyan.baidu.com/article/d169e1867cea7e436611d801.html svchost占用内存过高,会导致内存100%电脑卡住,CPU温 ...

  7. 解决Antimalware Service Executable CPU,内存占用高的问题

    1.win键+R键打开运行对话框框,输入gpedit.msc打开本地组策略编辑器(组策略):2.依次打开计算机配置-管理模板-Windows组件-Windows Defender:3.如果要关闭Win ...

  8. Mac下GoogleChromeHelper占用内存过高 的一个排查过程记录

    测试需要在Mac上装了个虚拟机,结果忘记限制资源了,直接崩溃重启过一次. 后面限制了一下资源,发现内存占用率还是特别高,其中最高的居然是Chrome相关的一个东西.这让我8G内存该如何是好. 于是查了 ...

  9. linux下分析java程序占用CPU、内存过高

    一.CPU过高分析 1)使用TOP命令查看CPU.内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比.其中CPU状态中标示id的为空闲 ...

随机推荐

  1. sqldeveloper和plsqldebeloper

    sqldeveloper : 支持不用tns连,支持jdbc直接连的. plsqldebeloper : 必须使用tns连, 如果oracle安装在本机,本机已经有tns文件,和oci.dll,只需在 ...

  2. 【转】JMeter试用手记

    JMeter是一款性能测试工具.个人认为与其说他是一个工具,不如说他是一个框架.因为JMeter的支持范围非常广,目前常见的需要进行性能测试的应用几乎都能应用(如:files, Servlets, P ...

  3. 【转】JMeter中对于Json数据的处理方法

    Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛.而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Js ...

  4. Rest之路 - Rest架构中的重要概念(二)

    状态无关性 Rest 架构中不维持client,resource and request 的状态,我们通常称 Rest 服务是状态无关的.基于此的优势是为设计Rest架构提供了简便:每一个请求可以被完 ...

  5. DB2的安装

    jiangxin@db01:~$ su – root #切换到root用户 密码: root@db01:~# uname -a #查看内核和操作系统信息 Linux db01 4.4.0-66-gen ...

  6. shulti模块简述

    #-*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import shutil shutil.copyfileobj('D:\\3. ...

  7. Python实现SSH传输文件(sftp)

    Windows通过ssh给Linux发送文件 #-*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import paramiko t ...

  8. fiddler代理hosts配置

    1 需求背景 fidder开启后,C:\Windows\System32\drivers\etc\hosts配置失效问题:fiddler本身代理hosts配置表,修改后,可以省去在手机等代理使用者的系 ...

  9. Python __getattribute__ vs __getattr__

    # 例子在原来的基础上简化了一下,排除依赖和干扰,详细参见原项目 class UrlGenerator(object): def __init__(self, root_url): self.url ...

  10. linux grep打印匹配的上下几行

    $grep -5 'parttern' inputfile //打印匹配行的前后5行 $grep -C 5 'parttern' inputfile //打印匹配行的前后5行 $grep -A 5 ' ...