MySQL内存使用率高且不释放问题排查与总结

news2024/10/5 16:22:58

背景

生产环境mysql 5.7内存占用超过90%以上,且一直下不来。截图如下:

原因分析

1、确定mysql具体的占用内存大小,通过命令:cat /proc/Mysql进程ID/status查看

命令执行后的结果比较多(其他参数的含义想了解可参考这个博客:Linux 进程的 status 注解。_rssanon-CSDN博客),重点看VmRSS参数发现使用了120G左右。

看到此处有必要延申一个知识点。innodb_buffer_pool_size

一、innodb_buffer_pool_size作用

        InnoDB存储引擎是MySQL中最常用的存储引擎之一,它使用内存缓存池(buffer pool)来缓存表中的数据和索引等信息。通过调整innodb_buffer_pool_size参数的大小,可以控制InnoDB存储引擎能够利用的内存空间,进而影响其缓存的数据量和索引数量

  innodb_buffer_pool_size设置的值较大时,InnoDB存储引擎能够缓存更多的数据和索引,从而减少磁盘I/O的次数,提高数据库的访问速度和性能。相反,如果缓存池设置过小,可能会导致频繁的磁盘I/O操作,影响数据库性能。

        一般为物理内存的60%-70%。

二、查看当前配置的pool_size:

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

发现结果是64G(配置文件也可查看),这里就发现问题:实际使用的内存量比配置的量多出了60G左右。

暂且把64G当成正常占用多出来的当成异常占用分析。

三、performance schema内存占用量分析

show engine performance_schema status;

查看结果中的最后一行。发现占用了200多M。

四、排查MySQL为当前session会话分配的内存

查看session级别的buffer和cache占用内存大小。

show variables where variable_name in ('binlog_cache_size','join_buffer_size','read_buffer_size','read_rnd_buffer_size','sort_buffer_size')

结果如下:

总共加起来接近800M。

里边每个值的含义和作用参考:MySQL session相关的内存设置_mysql为当前session会话分配的内存-CSDN博客

查看当前活跃的连接数

SELECT * FROM information_schema.processlist WHERE command != 'Sleep';

结果显示差不多只有9个,加入每个都分配了全量的会话内存,则差不多就是9G。(实际分配了多少需要根据当前会话执行的SQL判断,比如有无使用到排序、有没有使用join等)。上边的算完顶多才10G,还有50多G的消耗,也就意味着还有其他的占用。

五、排查当前临时表占用内存情况

查看tmp_table_size临时表配置的内存大小:

线程级别参数,实际限制从 tmp_table_size 和 max_heap_table_size 两个变量的的值中取较小值。

show variables where variable_name in ('tmp_table_size','max_heap_table_size')

 补充知识点一:临时表

        如果内存中的临时表超出限制,MySQL自动将其转换为磁盘上的MyISAM表。如果要执行许多 GROUP BY查询,可以增加tmp_table_size的值(或如有必要,也可以使用max_heap_table_size)。

  执行计划中Extra字段包含有“Using temporary” 时会产生临时表。

        MySQL中临时表主要有两类,包括外部临时表和内部临时表。外部临时表是通过语句create temporary table...创建的临时表,临时表只在本会话有效,会话断开后,临时表数据会自动清理。内部临时表主要有两类,一类是information_schema中临时表,另一类是会话执行查询时,如果执行计划中包含有“Using temporary”时,会产生临时表。内部临时表与外部临时表的一个区别在于,我们看不到内部临时表的表结构定义文件frm。而外部临时表的表定义文件frm,一般是以#sql{进程id}_{线程id}_序列号组成,因此不同会话可以创建同名的临时表。

         什么时候创建临时表:mysql中什么时候用临时表-mysql教程-PHP中文网

查看当前是否有临时表产生

show global status like '%tmp%'

发现频繁使用了临时表,并且出现了因内存临时表不够而使用到磁盘临时表。由于临时表占用的内存具体大小可能无法准确计算得出(因为使用完会回收,但是肯定存在当前未被回收情况)。

补充知识点二:Mysql内存管理模块:

         MySQL的内存分配使用了系统glibc,而glibc本身的内存分配算法存在缺陷,导致内存释放不完全,产生内存碎片。可以通过gdb命令手动回收内存碎片:

gdb --batch --pid ‘pidof mysqld’ --ex 'call malloc_trim(0)';

但是在生产环境这个操作应该谨慎使用。

此外,将MySQL的内存分配机制修改为jemalloc,可以更好的释放内存。关于glibc和jemalloc机制对MySQL数据库内存回收的影响可以参考这篇文章:https://mp.weixin.qq.com/s/iUvi0xPtKng08fNu_5VWDg

六、问题总结和解决思路

总结一下MySQL内存使用率高且不释放的应对方法:

  1. 继续加大内存(如果参数调无可调时选择);
  2. 修改减小innodb_buffer_pool_size参数(牺牲一定innodb性能);
  3. 排查消耗内存的慢SQL,及时优化;
  4. 检查相关session参数是否设置合理,比如join_buffer_size、query_cache_size是否设置过大;
  5. 使用gdb回收内存碎片(生产环境谨慎操作):gdb --batch --pid ‘pidof mysqld’ --ex 'call malloc_trim(0)';
  6. 对MySQL进程配置jemalloc内存管理模块;
  7. 配置读写分离,将读操作应用到从库,减少对主库的影响;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1869451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis-实战篇-实现商铺缓存与数据库的双写一致(超时剔除和主动更新)

文章目录 1、给查询商铺的缓存添加超时剔除和主动更新的策略2、根据id查询店铺2.1、queryById2.2、RedisConstants.java 3、根据id修改店铺3.1、ShopController.java3.2、update 1、给查询商铺的缓存添加超时剔除和主动更新的策略 修改ShopController中的业务逻辑,满…

ONLYOFFICE 桌面编辑器 8.1华丽登场

简介:全新ONLYOFFICE 桌面编辑器 8.1解锁全新PDF编辑、幻灯片优化与本地化体验,立即下载! 前言:在数字化时代,高效的办公协作工具是企业和个人不可或缺的利器。ONLYOFFICE,作为一款功能强大的云端和桌面办公…

亚马逊风控策略揭秘:测评系统为何这么重要?

在亚马逊这个竞争激烈的电商平台上,许多卖家都渴望通过测评来提升产品销量和排名。然而,亚马逊对测评行为的监管之严格,可以说是业内首屈一指。即便你采用的是由真实客户购买并评价的“真人测评”模式,也难免存在一定的风险。 那么…

Psychtoolbox 脑电实验范式之mp4视频绘制

1. 读取 首先需要使用到Screen(‘OpenMovie’)函数,该函数可以读取mp4、gif格式的数据,具体方式如下: clear; clc; Screen(Preference, SkipSyncTests, 1); screens Screen(Screens); screenNum max(screens); [window, screenRect] Scr…

参加六西格玛绿带培训是投资未来,还是花冤枉钱?

是否值得花费资金参加六西格玛绿带培训,取决于多个因素。 从积极的方面来看,参加六西格玛绿带培训具有以下潜在价值: 1. 提升专业技能:使您掌握一套系统的问题解决方法和流程改进工具,有助于在工作中更高效地解决复杂…

甄美天使1+3退休模式创富模型,甄美天使商业模式特点

甄美天使13退休模式级差,每个人都有机会成为千万的受益人; 坐标:厦门,我是肖琳 深耕社交新零售行业10年,主要提供新零售系统工具及顶层商业模式设计、全案策划运营陪跑等。 甄美天使的创富模型采用了社交电商的传播理…

千年织锦:中国古代包文化的辉煌历程与现代传承

追溯至远古,我们的祖先就开始利用自然界的恩赐——皮革、植物纤维等,制作出最原始的包袋。随着时间的推移,技艺的提升,包的材质逐渐丰富起来,从粗糙到精致,从简单到复杂,每一次材质的革新都是人…

Linux学习第54天:Linux WIFI 驱动:蓝星互联

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 数字化、现代化的今天,随处的WIFI给与了大众极大的方便,也感受到了科技的力量。万物互联、无线互联越来越成为一个不可逆转的趋势。现在比较火…

面试相关-接口测试常问的问题

1.为什么要做接口测试 (1)现在大多系统都是前后端分离的项目,前端和后端的进度可能不一样,那为了尽早的进入测试,前端界面没有开发完成的情况下,只要后端的接口开发完了,就可以提前做接口测试了; (2)基于安全考虑,只依赖前端进行限制,已经完全不满足系统的安全性…

DLS MARKETS外汇:日元暴跌,日本是否会再次干预汇市?

摘要 近日,日元兑美元汇率暴跌至1986年以来的最低水平,引发市场对日本政府可能再次干预汇市的猜测。尽管地缘政治紧张局势为日元带来压力,但美国和日本之间的巨大利差也是关键因素。本文将详细分析当前日元贬值的原因、日本当局的可能反应以及…

Java 自定义jackson2序列化器遇到的问题

问题1:java: 错误: 不支持发行版本 5 修改idea java环境 问题2:ClassNotFoundException: com.fasterxml.jackson.annotation.JsonMerge 缺少 jar 包:jackson-annotations 引入依赖的地址:https://mvnrepository.com/artifact/c…

武汉高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

随着科技的不断进步和工业4.0的深入推进,智能制造已成为现代工业发展的重要方向。在这一背景下,武汉高校大学智能制造实验室积极响应国家号召,致力于将先进的数字孪生技术与智能制造教育相结合,打造了一个集教学、实训、科研于一体…

python下载安装入门(一)

一.下载安装 1、官网下载地址: Python Releases for Windows | Python.org 2、下载安装 1.下载python包:点击下载 2.安装 2.默认点击next即可 3.选择你想安装的路径,点击install即可 4.这里如果出现管理员字样,点击授权即可 安…

广州高校大学智能制造实验室数字孪生可视化系统平台建设项目验收

广州高校大学智能制造实验室数字孪生可视化系统平台建设项目验收。在广州的高校中,智能制造实验室一直是科研创新和技术探索的前沿阵地。随着数字化、智能化技术的迅猛发展,数字孪生技术逐渐成为推动制造业转型升级的重要力量。近日,广州某高…

uniApp获取实时定位

通过你获取的key放到项目manifest.json里面&#xff0c;对应填写你所需要的key值&#xff0c;还有高德用户名 用户名&#xff1a; key值的位置&#xff1a; 代码&#xff1a; html: <view class"intList pdNone"><view class"label">详细地…

聊一聊UDF/UDTF/UDAF是什么,开发要点及如何使用?

背景介绍 UDF来源于Hive&#xff0c;Hive可以允许用户编写自己定义的函数UDF&#xff0c;然后在查询中进行使用。星环Inceptor中的UDF开发规范与Hive相同&#xff0c;目前有3种UDF&#xff1a; A. UDF--以单个数据行为参数&#xff0c;输出单个数据行&#xff1b; UDF&#…

DM达梦数据库基本语法整理

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝你生活愉快&#xff01; &#x1f49d;&#x1f49…

生命在于学习——Python人工智能原理(2.6.1)

六 Python的文件系统 6.1 打开文件 在Python中&#xff0c;可以使用内置的open函数来打开文件&#xff0c;open函数的基本语法如下&#xff1a; file open(file_name, moder, buffering-1, encodingNone, errorsNone, newlineNone, closefdTrue, openerNone)参数说明&#…

“水刊”来了!专注发表水方向的SCI刊物,此“水刊”非彼水刊

【SciencePub学术】曾经的超级“水刊”《WATER SUPPLY》因为触碰红线&#xff0c;现在依旧被“on hold”中&#xff0c;解封日期恐怕也是遥遥无期。 来源&#xff1a;科睿唯安官网 后台有人私信小编有没有关于“水”类的期刊推荐&#xff0c;小编后台整理了一下&#xff0c;今…

一键生成AI动画视频?Animatediff 和 ComfyUI 更配哦!

大家好我是极客菌&#xff01; 之前我分享过 Animatediff 在 WebUI 中的应用&#xff0c;最近不是在分享 ComfyUI 嘛&#xff0c;那我们也来讲讲 Animatediff 在 ComfyUI 的应用。 如果从工作流和内存利用率的角度来说&#xff0c;Animatediff 和 ComfyUI 可能更配一些&#…