首页 > 数据库 >MySQL5.7 访问Information_schema.TABLES 导至内存持续增长

MySQL5.7 访问Information_schema.TABLES 导至内存持续增长

时间:2023-05-06 11:35:01浏览次数:60  
标签:TABLES 导至 Information 5.7 free 内存 监控 mysql schema

在生产环境5.7.30的数据库中,部署了MYSQL监控,但是发现部署完监控后,mysqld的内存持续增长。后通过监控发现也正是监控用户占用了大量的内存。

目录

  • 适用范围
  • 问题概述
  • 问题原因
  • 解决方案
  • 参考文档

适用范围

mysql 5.7

问题概述

在生产环境5.7.30的数据库中,部署了MYSQL监控,但是发现部署完监控后,mysqld的内存持续增长。后通过监控发现也正是监控用户占用了大量的内存。

MySQL5.7 访问Information_schema.TABLES 导至内存持续增长_mysql

问题原因

通过排查确认,这是mysql 5.7的bug ,在采集表信息,当这些连接断开后,有可能导至内存不会自动释放,从而影响内存的持续增加。https://bugs.mysql.com/bug.php?id=86279 为了证实这个bug ,在生产环境下的slave 做了如下测试:
检查当前内存:

[root@s2ahuMaster01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           32011       23159      5799       1593       3052        6865
Swap:             0           0           0

第一次查询 information_schema.TABLES 查询 :
检查当前内存,内存减少了 1001 M:

[root@s2ahuMaster01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           32011       24159       4526       1593       3325        5864
Swap:             0           0           0

第二次查询information_schema.TABLES 查询(未断开连接) :
检查当前内存,内存减少了 5M:

[root@s2ahuMaster01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           32011       24164       4786       1593       3059        5859
Swap:             0           0           0

第三次查询information_schema.TABLES 查询(断开连接,重新连接) :
检查当前内存,内存减少了 810 M:

[root@s2ahuMaster01 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           32011       24975       3681        1593       3354        5049
Swap:             0           0           0

通过验证,我们确认该BUG在 5.7.30版本中仍然存在。

解决方案

1.升级mysql 到8.0 , 目前mysql 5.7 将在2023年10月结束支持,且5.7上的该问题没有得到有效的解决。

2.监控时禁止采集information_schema 下的信息 ,但会影响监控信息的采集和使用;

如在监控软件中可以在msyql_exporter 通过 --collect.info_schema.tables=false 禁止采集 tables 的相关信息,同时禁用以下参数。

MySQL5.7 访问Information_schema.TABLES 导至内存持续增长_mysql_02

3.经过测试发现短连接会出来类似问题更为严重,为避免这个问题可以将监控的短连接改成长连接。
4.临时通过gdb手动回收内存
注: 在生产环境中执行gdb有风险,需经过DBA确认后在业务低峰执行。

free -m 
gdb --batch --pid `pidof mysqld` --ex 'call malloc_trim(0)' 
free -m

补充:
经过验证确认,客户在每天跑批的存储过程的,也有用到 information_schema.cloumns 对象,经过验证,同样存在不释放的问题,这也解释了,为什么每天跑完批后,内存就会增加,不释放的原因。

参考文档

https://bugs.mysql.com/bug.php?id=86279



标签:TABLES,导至,Information,5.7,free,内存,监控,mysql,schema
From: https://blog.51cto.com/u_12993908/6249317

相关文章

  • How Many Tables
    HowManyTablesTimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):16865AcceptedSubmission(s):8270ProblemDescriptionTodayisIgnatius'birthday.Heinvitesalotoffriends.Nowit'sd......
  • Handling Information Loss of Graph Neural Networks for Session-based Recommendat
    目录概符号说明存在的问题LossysessionencodingproblemIneffectivelong-rangedependencycapturingproblemLESSRS2MGS2SG模型EOPA(Edge-OrderPreservingAggregation)SGAT(ShortcutGraphAttention)叠加代码ChenT.andWongR.C.Handlinginformationlossofgrap......
  • CentOS7 iptables防火墙 常用的命令
    CentOS7iptables防火墙常用的命令 iptables-Lvi/etc/sysconfig/iptablesserviceiptablesstatusnetstat-an|grep自定义的端口iptables-AINPUT-ptcp--dport自定义的端口-jACCEPTserviceiptablessavesystemctlrestartiptables.servicenetsta......
  • Tablespace 'innodb_system' Page [page id: space=0, page number=5] log sequence n
    场景:这几天在外面实习,老师的项目数据库崩了让我看,连着两条看到十一二点,哎。主要场景是mysql突然崩溃,发现重启mysqld服务无效,重启系统无效。查看/var/log/mysql.log日志,看到以下内容:Themanualpageathttp://dev.mysql.com/doc/mysql/en/crashing.htmlcontainsinfo......
  • How to get Linux kernel Information using the command line All In One
    HowtogetLinuxkernelInformationusingthecommandlineAllInOne如何使用命令行获取Linux内核信息uname#macOS$uname-aDarwinxgqfrms-mm.local22.2.0DarwinKernelVersion22.2.0:FriNov1102:08:47PST2022;root:xnu-8792.61.2~4/RELEASE_X86_64x......
  • Converting a regular DB2 DMS tablespace to LARGE
    ConvertingaregularDB2DMStablespacetoLARGEhttps://www.ibm.com/support/pages/converting-regular-db2-dms-tablespace-large#:~:text=Convert%20the%20tablespace%20to%20LARGE%20by,running%3A%20alter%20tablespace%20tbspace_name%20CONVERT%20TO%20......
  • springboot集成redis时总报错Connection refused: no further information: localhost
    nacos上配置的关于redis的key值不是springboot需要的固定写法如:sping.redis.host=spring.redis.port=sping.redis.password=spring.redis.database=我写的是一个自定义的key如com.dream.redis.host改为springboot认识的即可其他和springboot集成的组件类似,切记......
  • CentOS linux关闭iptables防火墙
    评:linux服务器下防火墙为iptables组件,在安装一些软件的时候,iptables防火墙会阻止我们一些必要的连接,所以,我代购的美国服务器,荷兰服务器等海外服务器iptables初始状态为关闭。如果有一些服务器没有关闭iptables,并且你还特别想关闭它,哪么以下命令,你可以能用的上。查看iptables状......
  • K8s为啥要启用bridge-nf-call-iptables内核参数?用案例给你讲明白
    使用kubernetes遇到最多的70%问题都可以归于网络问题,最近发现如果内核参数:bridge-nf-call-iptables设置不当的话会影响kubernetes中Node节点上的Pod通过ClusterIP去访问同Node上的其它pod时会有超时现象,复盘记录一下排查的前因后因。1、问题现象集群环境为K8sv......
  • Lab pgtbl: Page tables
    Speedupsystemcallskernel.h/proc.h,在structproc中添加structusyscall*usyscallkernel.h/proc.c,在proc_pagetable()中添加USYSCALL的PTEkernel.h/proc.c,在allocproc()中为p->usyscall分配空间,初始化p->usyscall->pid=p->pidkernel.h/proc.c,在freeproc(......