问题:

  1、我们怎么确定MySQL的各个部分分别使用了多少内存?

  2、当有MySQL由于内存泄露引起OOM时、我们怎么提前发现?

怎么监控MySQL内存使用:

  答案是通过performance_schema来完成、具体的做法如下:

第一步: 配置performance_schema使它开启内存方面的监控

  在/etc/my.cnf中增加如下内容

####  for performance_schema
performance_schema =on # on
performance_schema_consumer_events_stages_current =on # off
performance_schema_consumer_events_stages_history =on # off
performance_schema_consumer_events_stages_history_long =off # off
performance_schema_consumer_statements_digest =on # on
performance_schema_consumer_events_statements_current =on # on
performance_schema_consumer_events_statements_history =on # on
performance_schema_consumer_events_statements_history_long =off # off
performance_schema_consumer_events_waits_current =on # off
performance_schema_consumer_events_waits_history =on # off
performance_schema_consumer_events_waits_history_long =off # off
performance_schema_consumer_global_instrumentation =on # on
performance_schema_consumer_thread_instrumentation =on # on
performance-schema-instrument ='memory/%=COUNTED'

第二步:重启mysql数据库

systemctl restart mysql

  这里要重启MySQL的主要是因为,许多的内存是在启动MySQL的时候就分配好了的,如果我们在MySQL启动完成后再通过

  performance_schema.setup_instrument表来配置内存相关的监控的话,就是漏掉一些内存没有监控到。

第三步:通过performance_schema查询内存的使用情况

mysql> SELECT SUBSTRING_INDEX(event_name,'/',2) AS code_area, sys.format_bytes(SUM(current_alloc)) AS current_alloc
-> FROM sys.x$memory_global_by_current_bytes GROUP BY SUBSTRING_INDEX(event_name,'/',2) ORDER BY SUM(current_alloc) DESC;
+---------------------------+---------------+
| code_area | current_alloc |
+---------------------------+---------------+
| memory/innodb | 1.47 GiB |
| memory/performance_schema | 131.51 MiB |
| memory/mysys | 8.22 MiB |
| memory/sql | 3.19 MiB |
| memory/memory | 213.15 KiB |
| memory/myisam | 171.79 KiB |
| memory/csv | 512 bytes |
| memory/blackhole | 512 bytes |
+---------------------------+---------------+
8 rows in set (0.00 sec)

  1、从上面的结果我们可以知道innodb、performance_schema、mysys ... 它们共用了多少内存了、如果某一类组件的内存使用没有节制的增长上去、多半

  它就是内存泄露了。 对于这种情况只能是升级MySQL到更高的版本了。

目前performance-schema相关的配置模板已经增加到mysqltools当中

  https://github.com/Neeky/mysqltools/blob/master/deploy/ansible/mysql/template/5.7/my.cnf

----------------------------------------------------------------------------

----------------------------------------------------------------------------

MySQL -- 内存使用监控详解的更多相关文章

  1. mysql学习3:mysql之my.cnf详解

    mysql之my.cnf详解 本文转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html 以下是 my.cnf 配置文件参数解释: #*** ...

  2. mysql配置文件my.cnf详解

    原文地址:mysql配置文件my.cnf详解 作者:gron basedir = path 使用给定目录作为根目录(安装目录). character-sets-dir = path 给出存放着字符集的 ...

  3. MySQL 执行计划explain详解

    MySQL 执行计划explain详解 2015-08-10 13:56:27 分类: MySQL explain命令是查看查询优化器如何决定执行查询的主要方法.这个功能有局限性,并不总会说出真相,但 ...

  4. MySQL权限授权认证详解

    MySQL权限授权认证详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL权限系统介绍1>.权限系统的作用是授予来自某个主机的某个用户可以查询.插入.修改.删除 ...

  5. 重新学习MySQL数据库7:详解MyIsam与InnoDB引擎的锁实现

    重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现 说到锁机制之前,先来看看Mysql的存储引擎,毕竟不同的引擎的锁机制也随着不同. 三类常见引擎: MyIsam :不支持事务,不 ...

  6. MySQL集群搭建详解

    概述 MySQL Cluster 是MySQL 适合于分布式计算环境的高实用.可拓展.高性能.高冗余版本,其研发设计的初衷就是要满足许多行业里的最严酷应用要求,这些应用中经常要求数据库运行的可靠性要达 ...

  7. MySQL 语句执行过程详解

    MySQL 原理篇 MySQL 索引机制 MySQL 体系结构及存储引擎 MySQL 语句执行过程详解 MySQL 执行计划详解 MySQL InnoDB 缓冲池 MySQL InnoDB 事务 My ...

  8. MySQL性能分析, mysql explain执行计划详解

    MySQL性能分析 MySQL性能分析及explain用法的知识是本文我们主要要介绍的内容,接下来就让我们通过一些实际的例子来介绍这一过程,希望能够对您有所帮助. 1.使用explain语句去查看分析 ...

  9. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

随机推荐

  1. MapReduce任务参数调优(转)

    http://blog.javachen.com/2014/06/24/tuning-in-mapreduce/ 本文主要记录Hadoop 2.x版本中MapReduce参数调优,不涉及Yarn的调优 ...

  2. 解决mybatis报错Result Maps collection does not contain value for java.lang.Integer

    解决办法:1.检查mybatis的xml配置 2.在某处肯定有配错了的,如"resultMap" -->"resultType" [html] view ...

  3. oracle-sakila-db sakila的Oracle版本

    在Sakila——MySQL样例数据库解析 中,学习了sakila for mysql的表结构.并把它作为数据仓库.ODI ETL学习的源数据库.ODI Studio拓扑结构的创建与配置 后来发现OD ...

  4. ODI Studio拓扑结构的创建与配置(MySQL)

    拓扑结构的创建与配置 一.概念解释 Topology Manager主要用来管理下面5类任务,并将信息存储在主资料库中,供所有模块共享使用. 物理体系结构: 定义各种技术及其数据服务器.物理架构.物理 ...

  5. java的配置方式简介

    1,java的配置方式简介java的配置方式是为了代替使用xml配置方式,主要使用两个注解:@Configuration//通过该注解来表明该类是一个spring的配置,相当于一个xml文件@Comp ...

  6. GDALBuildVRT异构波段的支持

    目录 简述 修改源码 1.修改DatasetProperty结构体 2.修改VRTBuilder::AnalyseRaster函数 3.修改VRTBuilder::CreateVRTNonSepara ...

  7. 读书笔记——spring cloud 中 HystrixCommand的四种执行方式简述

    读了<Spring Cloud 微服务实战>第151-154页, 总结如下: Hystrix存在两种Command,一种是HystrixCommand,另一种是HystrixObserva ...

  8. Netstat命令详解(windows下)

      Netstat 用于显示与IP .TCP .UDP 和ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况. 如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,T ...

  9. Red Hat7.2 上安装 MySQL5.5.58

    1.首先查看linux版本:cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.2 (Maipo) 2.Linux查看版 ...

  10. 体验cygwin纪实

    在windows快速体验linux,借助Cygwin很不错的体验(占用空间小),win10应用商店目前集成ubuntu.fedora...系统... 00.安装源,直接下载的是init(仅仅是下载器) ...