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. Python的Django框架中if标签的相关使用

    {% if today_is_weekend%} {% end if %} 系统会显示在这之间的内容 {% else %}标签是可选的 在python和django模板系统中,以下对象相当于布尔值的F ...

  2. elasticsearch 动态模板

    在elasticsearch中,如果你有一类相似的数据字段,想要统一设置其映射,就可以用到一项功能:动态模板映射(dynamic_templates). 每个模板都有一个名字用于描述这个模板的用途,一 ...

  3. C#检测应用程序重复启动----函数检测(可以在多用户登录情况下检测)

    上文是在网上找的检测程序重复运行的类,但是感觉不是很好用,而且还使用了API,似乎完全没有必要,于是晚上自己写了一个函数,经过测试,在多用户下仍然可以检测到程序的多次运行.当然,如果程序改了名字还是可 ...

  4. 致Oracle DBA 的一封信 (网上流传)

    1. 数据库的可用度,DBA 说了“不算”   --物化视图,加快查询速度 某些时候数据库的可用性,并不由DBA所设定.因为即使DBA对数据库有绝对掌控权,但用户可能从自己的工作和应用角度,与DBA的 ...

  5. 12C中Profile的使用

    12c中PROFILE在PDB和CDB中是公用的,不过创建的profile名称在CDB和PDB有所不同. 如: 1.CDB中创建Profile SQL> show con_name CON_NA ...

  6. 一个kafka异常

    卡夫卡经常超时,而且超时时间固定为三分钟,因为时间长度固定,所以逆推一下,发现现有的配置里面有个session的timeout是三分钟,但是其实后来验证发现真是的原因是connect timeout, ...

  7. 洛谷 4721 【模板】分治 FFT——分治FFT / 多项式求逆

    题目:https://www.luogu.org/problemnew/show/P4721 分治FFT:https://www.cnblogs.com/bztMinamoto/p/9749557.h ...

  8. Amoeba mysql读写分离搭建及介绍

    Amoeba mysql读写分离搭建及介绍 推荐: http://blog.chinaunix.net/uid-20639775-id-154600.html

  9. nginx安装及编译参数详解

    1.centos下Yum安装 Nginx yum list|grep nginx 发现没有可用的结果通过创建下面的文件在系统中添加nginx仓库的yum配置vi /etc/yum.repos.d/ng ...

  10. 验证DataGridView单元格的值

    private void gridPurchaseOrderDetail_CellValidating(object sender, DataGridViewCellValidatingEventAr ...