mysql 与linux ~ 内存分析与调优
一 简介:linux内存和mysql
二 分类
1 用户空间和内核空间
用户空间内存,从低到高分别是五种不同的内存段
1 只读段 包含代码和常量等
2 数据段 包含全局变量等
3 堆,包含动态分配的内存,从低地址开始增长
4 文件映射段,包括动态库,共享内存等,从高地址开始向下增长
5 栈,包括局部变量和函数调用的上下文切换等,栈的大小一般是8MB
2 分配内存
1 使用C标准库的malloc()或者mmap(),就可以在堆和文件映射段分配内存了,通过free()或者ummap()进行释放
3 回收内存空间的方式
注意 下面进行回收的内存都是被标记为已使用的
1 回收缓存 LRU淘汰不常使用的缓存页
2 回收不常访问的内存.把不常用的内存通过交换分区直接写到磁盘中
3 杀死进程 OOM-KILLER
4 top关注进程
virt是虚拟内存占用量,即便没有使用,只要申请过,就会算进去
res 是实际占用内存,但是不包含共享内存和swap占用
share 是共享内存大小
mem% 是进程占用物理内存的百分比
注意 通常情况下虚拟内存的占用会远远大于真实内存,但是如果相等,就标明申请的全部用到
5 free -m
1 Buffer(缓冲区) 是对磁盘数据的缓存,用来合并多次小写成为一次大写
2 Cache(缓存) 是文件数据的缓存,用来进行文件的读写
数据库针对cache的使用率非常高,因为都是从文件读取数据到内存的
三 mysql层
1 innodb_buffer_pool定义(主要)
2 session占用(次要)
3 table cache相关的内存(次要)
4 tmp/memory 引擎表占用(次要)
四 分析方法
一 linux角度
工具:pmap是linux系统自带的一款内存分析工具
用法: pmap -d pid
说明
-x extended Show the extended format. 显示扩展格式
-d device Show the device format. 显示设备格式
输出结果解析:
1 mapped 和writeable/private 能够反映内存的变化.
mapped 表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小,即ps出的vsz
writeable/private 表示进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小
shared 表示进程和其他进程共享的内存大小
工具: valgrind
用法: ./valgrind --tool=memcheck --leak-check=yes --show-reachable=yes program
可以确定是否有内存泄漏
二 mysql角度
版本:mysql5.7+
分析 1 根据 performance_schema 可以分析 现主要的占用内存,比如innodb_buffer_pool,session等
2 查看mysql innodb_buffer_pool的命中率
五 常见问题:
1 linux系统内存较少,mysql发生OOM
2 linux系统内存很大,mysql innodb_buffer_pool指定很少,但是内存占用无限大,最后导致被OOM
mysql 与linux ~ 内存分析与调优的更多相关文章
- mysql与linux ~ 磁盘分析与调优
一 简介 谈谈磁盘IO的问题二 目的:如何进行IO性能问题的排查 二 linux角度 一 机械硬盘基本定义 寻道时间,表示磁头在不同磁道之间移动的时间(最耗时). 旋转延 ...
- linux性能分析及调优
第一节:cpu 性能瓶颈 计算机中,cpu是最重要的一个子系统,负责所有计算任务: 基于摩尔定律的发展,cpu是发展最快的一个硬件,所以瓶颈很少出现在cpu上: 我们线上环境的cpu都是多核的,并且基 ...
- linux性能调分析及调优
转:https://blog.csdn.net/luokehua789789/article/details/53007456 Linux 性能分析以及调优介绍 写在前面:计算机要解决的基本问题之一是 ...
- MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选
1 .MySQL数据库的性能监控 1.1.如何查看MySQL数据库的连接数 连接数是指用户已经创建多少个连接,也就是MySQL中通过执行 SHOW PROCESSLIST命令输出结果中运行着的线程 ...
- linux 内核参数VM调优 之 参数调节和场景分析
1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...
- (转)linux IO 内核参数调优 之 参数调节和场景分析
1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...
- Linux 系统TCP连接内存大小限制 调优
系统TCP连接内存大小限制 TCP的每一个连接请求,读写都需要占用系统内存资源,可根据系统配置,对TCP连接数,内存大小,限制调优. 查看系统内存资源 记录内存 详情:cat /proc/meminf ...
- 鲲鹏性能优化十板斧(二)——CPU与内存子系统性能调优
1.1 CPU与内存子系统性能调优简介 调优思路 性能优化的思路如下: l 如果CPU的利用率不高,说明资源没有充分利用,可以通过工具(如strace)查看应用程序阻塞在哪里,一般为磁盘,网络或应 ...
- MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》
最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...
随机推荐
- Spring 4 : 整合 SSH
简介:ssh的整合 1 SSH整合 1.1 jar整合 struts:2.3.15.3 hibernate : 3.6.10 spring: 3.2.0 1.1.1 struts( ...
- 1. github配置
1. 安装:官网傻瓜式安装 2.密钥的生成:为了不让不想干的人提交代码,所以需要一个密钥 执行这个命令 : ssh-keygen -t rsa -C "邮箱地址" 然后一直回车键回 ...
- tensor flow中summary用法总结
对于用法的总结详细的参见博文https://www.cnblogs.com/lyc-seu/p/8647792.html
- mysql 游标的使用方法
BEGIN /*计算用户提成总金额*/ declare amountPrice,pays,rates,goodsPrice DECIMAL(10,2) DEFAULT 0; DECLARE flag ...
- 将分支代码合并到master和将master代码合并到dev
两种合并分支的方法: 都保证在合到的那个分支上面:A合并到B,即保证当前在B分支上. A merge B是把A中的改动放到B分支上,B merge A是把B中的改动merge到A中,例如把master ...
- Vue(基础三)_监听器与计算属性
一.前言 本文主要涉及: 1.watch()监听单个属性 2.computed可以监听多个属性 3.点击li标签切换音乐案例 二.主要内容 1.watch()监听器(监听单一数据) (1)监听 ...
- mybatis mapper配置
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- 本地服务器上挂载A目录到B目录
原因: 由于某个分区满了,切磁盘无法扩大分区空间,但是项目依赖该分区,需要继续像该分区存储文件,此时其他分区还有很大的空间,使用挂载的方式,在有空间的分区创建新目录,将新目录挂载到源目录下即可. 执行 ...
- centos系统中php7安装memcached 扩展
#编译安装php-7.1.16 #wget http://cn2.php.net/distributions/php-7.1.16.tar.gz#tar -zxvf php-7.1.16.tar.gz ...
- python socket原理 及socket如何使(tcp udp协议)
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(API) 主要内容: 1.基于 ...