首页 技术 正文
技术 2022年11月12日
0 收藏 386 点赞 2,549 浏览 1326 个字

一 简介: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

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,907
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,432
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,247
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,058
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,690
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,727