关于如何选择这三种内存分配器,网上资料大多都是推荐摒弃 glibc 原生的 ptmalloc,而改用 jemalloc 或者 tcmalloc 作为默认分配器 。因为 ptmalloc 的主要问题其实是内存浪费、内存碎片、以及加锁导致的性能问题,而 jemalloc 与 tcmalloc 对于内存碎片、多线程处理优化的更好 。
目前 jemalloc 应用于 Firefox、FaceBook 等,并且是 MariaDB、Redis、Tengine 默认推荐的内存分配器,而 tcmalloc 则应用于 WebKit、Chrome 等 。
如何查看mysql内存占用原因查看 /proc/meminfo
Tips:
“大内存页”也称传统大页、大页内存等有助于 Linux 进行虚拟内存的管理,标准的内存页为 4KB,这里使用“大内存页”最大可以定义 1GB 的页面大小 , 在系统启动期间可以使用“大内存页”为应用程序预留一部分内存,这部分内存被占用且永远不会被交换出内存,它会一直保留在那里,直到改变配置 。(详细介绍请看下面链接官方解释)
那么这么大页内存是分配给谁的呢?
查询一下:
shell /proc/sys/vm/hugetlb_shm_group
27
shell id 27
uid=27(mysql) gid=27(mysql) groups=27(mysql)
hugetlb_shm_group 文件里填的是指定大页内存使用的用户组 id,这里查看到是 MySQL 组 id,那既然是给 MySQL 的为什么 free 等于 total,并且 mysql 还只有 20 多 G 实际使用内存呢?
原来在 MySQL 中还有专门启用大内存页的参数,在 MySQL 大内存页称为 large page 。
查看 MySQL 配置文件
发现配置文件中确实有 large-page 配置,但出于禁用状态 。
后与业务确认,很早之前确实启用过 mysql 的 large page,不过后面禁用了 。排查到这基本就有了结论 。
结论
这套环境之前开启了 20000 的大内存页,每页大小为 2MB , 占用了 40G 内存空间,给 MySQL 使用 , 并且 MySQL 开启了 large page , 但后来不使用的时候,只关闭了 MySQL 端的 large page 参数,但没有实际更改主机的关于大内存页的配置,所以导致,实际上主机上的还存在 20000 的大内存页 , 并且没在使用 , 这一部分长期空闲 , 并且其他程序不能使用 。
所以 MySQL 在使用 20G 内存左右 , 整个主机内存就饱和了 , 然后在部分条件下,就触发了 OOM,导致 mysqld 被 kill,但主机上又有 mysqld_safe 守护程序,所以又再次给拉起来 , 就看到了文章初的偶尔连接不上的现象 。
如何查看mysql每个连接使用多少内存?如果是linux系统,可以使用top命令,windows系统,查看资源管理器,找到mysql的进程,查看使用内存 。
如何查看MySQL占用的内存都用在哪了如何查看MySQL占用的内存都用在哪了1、查看物理CPU的个数[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep “physical id”|sort |uniq|wc -l12、查看逻辑CPU的个数[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep “processor”|wc -l43、查看CPU是几核(即,核心数)[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep “cores”|uniqcpu cores: 44、查看CPU的主频[root@MysqlCluster01 ~]# cat /proc/cpuinfo |grep MHz|uniqcpu MHz: 2499.9825、当前操作系统内核信息[root@MysqlCluster01 ~]# uname -aLinux MysqlCluster01 2.6.32-431.20.3.el6.x86_64 #1 SMP Thu Jun 19 21:14:45 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux6、当前操作系统发行版信息[root@MysqlCluster01 ~]# cat /etc/issueCentOS release 6.4 (Final)Kernel
on an m7、内存使用情况[root@MysqlCluster01 ~]# free -mtotalusedfreesharedbufferscachedMem:7863273851250141835-/+ buffers/cache:17616102Swap:396703967如何查看MySQL占用的内存都用在哪了
怎么查看mysql的内存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql查看占用内存大小、怎么查看mysql的内存的信息别忘了在本站进行查找喔 。
推荐阅读
- 荆门网站制作,荆门网站制作公司
- 驾校视频号怎么拍摄的,驾校视频素材
- 新闻直播间b站,b站直播新闻公告
- vb.net禁止事件的简单介绍
- flutter插件打包,Flutter插件
- 有线电视节目表怎么做,有线电视节目频道表
- 美国游戏开发工程师,游戏开发工程师英文
- Linux常用命令带例子 linux 常用 命令
- 升级后电脑硬盘怎么装驱动,电脑怎么装两个硬盘