mysql数据库内存占用高原因(数据库内存占用高)

news2024/9/20 15:43:17

1、查看数据库分配内存大小

( mysql内存计算器,具体地址为http://www.mysqlcalculator.com/ )

select VARIABLE_NAME,VARIABLE_VALUE/1024/1024 MB from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME in ('key_buffer_size','query_cache_size','tmp_table_size','innodb_buffer_pool_size','innodb_additional_mem_pool_size','innodb_log_buffer_size')
union all
SELECT 'sort_buffer_size',(V1.VARIABLE_VALUE*v2.vv) MB
FROM ( select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='MAX_CONNECTIONS' ) AS v1,
  ( SELECT VARIABLE_VALUE/1024/1024 vv FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'sort_buffer_size' ) AS v2 
union all
SELECT 'read_buffer_size',(V1.VARIABLE_VALUE*v2.vv) MB
FROM ( select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='MAX_CONNECTIONS' ) AS v1,
  ( SELECT VARIABLE_VALUE/1024/1024 vv FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'read_buffer_size' ) AS v2 
union all
SELECT 'read_rnd_buffer_size',(V1.VARIABLE_VALUE*v2.vv) MB
FROM ( select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='MAX_CONNECTIONS' ) AS v1,
  ( SELECT VARIABLE_VALUE/1024/1024 vv FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'read_rnd_buffer_size' ) AS v2 
union all
SELECT 'join_buffer_size',(V1.VARIABLE_VALUE*v2.vv) MB
FROM ( select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='MAX_CONNECTIONS' ) AS v1,
  ( SELECT VARIABLE_VALUE/1024/1024  vv FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'join_buffer_size' ) AS v2 
union all
SELECT 'thread_stack',(V1.VARIABLE_VALUE*v2.vv) MB
FROM ( select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='MAX_CONNECTIONS' ) AS v1,
  ( SELECT VARIABLE_VALUE/1024/1024 vv FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'thread_stack' ) AS v2 
union all
SELECT 'binlog_cache_size',(V1.VARIABLE_VALUE*v2.vv) MB
FROM ( select VARIABLE_VALUE from information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='MAX_CONNECTIONS' ) AS v1,
  ( SELECT VARIABLE_VALUE/1024/1024 vv FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME = 'binlog_cache_size' ) AS v2

可以看出每个session所分配的内存平均偏高,这里计算是要乘以MAX_CONNECTIONS的


2、查看innodb缓冲池实际使用内存

通过将缓冲池中可用的数据与InnoDB页面(InnoDB缓冲池单位)大小相乘,可以计算InnoDB缓冲池此时正在使用的实际内存。从MySQL 5.7.6开始,GLOBAL_STATUS表中提供的信息从Performance Schema获取。

set @ibpdata = (select variable_value from performance_schema.global_status where variable_name = 'innodb_buffer_pool_pages_data');
select @ibpdata;
set @idbpgsize = (select variable_value from performance_schema.global_status where variable_name = 'innodb_page_size');
select @idbpgsize;
set @ibpsize = @ibpdata * @idbpgsize / (1024*1024*1024);
select @ibpsize;

分配36G,实际使用34.5G,占比95%

由top命令可知mysql数据库占服务器内存93%,即

数据库内存:48*0.93=44.64GB

数据库内存明细:34.55G+32+128+1600*4+200+3200=44.74GB


3、查看数据库连接数情况

Max_connections:整个服务器的用户限制,即mysql上限连接数 ,增加该值增加mysqld 要求的文件描述符的数量。如果服务器的并发连接请求量比较大,建议调高此值,以增加并行连接数量,当然这建立在机器能支撑的情况下,因为如果连接数越多,介于MySQL会为每个连接提供连接缓冲区,就会开销越多的内存

Max_user_connections: 限制每个用户的session连接个数,例如max_user_connections=1 ,那么用户u1只能连接的session数为1,如果还有用户u2,还是可以连接,但是连接数仍然为1,如果数据库只有一个用户,那Max_user_connections自然等于Max_connections。

Max_used_connections:mysql历史响应最大连接数

Max_connect_errors:默认10,每个主机的连接请求异常中断的最大次数

Max_connections_used_rate:最大连接数使用率,历史最大连接数占上限连接数的85%左右,如果发现比例在10%以下,证明MySQL服务器连接数上限设置的过高了

show variables like '%connect%';
show global status like 'Max_used_connections';
show global status like 'Threads_connected';
--最大连接数使用率(建议85%)
Max_used_connections/max_connections
--当前连接数使用率
Threads_connected/max_connections

从最大连接数使用率可知max_connections设置的过高了


4、优化数据库连接数配置

优化如下:

max_connections=350
max_connect_errors=50
max_user_connections=300

优化后问题解决,过了3天zabbix都没告警..


总结

这里只是从连接数角度来做优化,实际场景需结合当前正在运行的sql做分析,例如可能有条sql正在做全扫,占了内存池很大空间,可以同时从show full processlist和sys.memory_global_by_current_bytes来进一步观察,这里也是需要考虑的一个点。

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

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

相关文章

基本数据与封装对象转换(Java)

文章目录 1. 基本数据与对象封装转换1.1 8种基本数据类型:1.2 基本数据类型 -- > 封装对象:1.3 封装对象 -- > 基本数据类型:1.4 借助String类型作为中间桥梁 2. 自动转换规则 1. 基本数据与对象封装转换 1.1 8种基本数据类型: boolean(true/false),byte(1 …

时间序列预测 | Matlab粒子群算法(PSO)优化极限梯度提升树XGBoost时间序列预测,PSO-XGBoost时间序列预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 时间序列预测 | Matlab基粒子群算法(PSO)优化极限梯度提升树XGBoost时间序列预测,PSO-XGBoost时间序列预测模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码…

【雕爷学编程】Arduino动手做(153)---2.4寸TFT液晶触摸屏模块4

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

基于matlab使用激光雷达检测地平面和障碍物(附源码)

一、前言 此示例演示如何通过分割地平面并查找附近的障碍物来处理来自安装在车辆上的传感器的 3-D 激光雷达数据。这可以促进车辆导航的可驾驶路径规划。该示例还演示如何可视化流式激光雷达数据。 二、创建 Velodyne 文件读取器 本例中使用的激光雷达数据是使用安装在车辆上…

[工业互联-17]:常见EtherCAT主站与实现方法

目录 第1章 EtherCAT入门 1.1 简介 1.2 EtherCAT通信架构 第2章 EtherCAT主站方案 2.1 方案概述 2.2 主站配置步骤 2.3 EtherCAT主站软件 第3章 Windows操作系统支持EtherCAT的基本步骤 第4章 常见主站软件介绍:TwinCAT 4.1 简介 4.2 软件架构 4.3 应…

【计算机网络】第三章 数据链路层(概述 封装成桢 差错检错)

文章目录 第三章 数据链路层3.1 数据链路层概述3.2 封装成帧3.3 差错检测3.3.1 奇偶校验3.3.2 循环冗余校验 第三章 数据链路层 3.1 数据链路层概述 数据链路层是计算机网络体系结构中的一层,位于物理层和网络层之间。它负责在相邻节点之间传输数据,并提…

hugging face参数高效微调peft源码解析

大模型参数高效微调(PEFT) - 知乎 让天下没有难Tuning的大模型-PEFT技术简介 - 知乎 大模型参数高效微调技术原理综述(三)-P-Tuning、P-Tuning v2 - 知乎 你似乎来到了没有知识存在的荒原 - 知乎 大模型参数高效微调技术原理综述(六&a…

由LM386构成的3W简易OCL功放电路/由TDA2009构成的1W高保真BTL功率放大器

由LM386构成的3W简易OCL功放电路 该电路是使用低功耗集成功率放大器 LM386 构成的 OCL 功放电路,电路结构简单,容易调试,非常适于自制。 一、电路工作原理 电路原理如图 31 所示。 图中IC1和IC2是两片集成功放LM386,接成OCL电路…

【编程的多线程学习-前章】什么是进程,PCB进程控制块抽象,cup分配,内存分配,虚拟地址,进程的通信,进程的意义

什么是进程 什么是进程/任务(Process/Task)进程就是一个运行起来的程序PCB 进程控制块抽象(PCB Process Control Block)pcb就是一个进程PCB具体包含的信息 CPU 分配 —— 进程调度(Process Scheduling)内存分配 —— 内存管理&…

Linux进度条小程序

文章目录 🪅1. 回车换行♥1.1 回车♥1.2 换行 🪆2. 缓冲区现象🧸3. 进度条实现♟3.1 逻辑♟3.2 进度条样式♟3.3 代码实现 🃏4. 场景使用 🪅1. 回车换行 在学习C语言的时候,我们输出的时候,通常…

Linux 安装elasticsearch,kibana,Logstash

1、Elasticsearch 安装 cd /usr/localwget \ https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.7-linux-x86_64.tar.gz \ https://artifacts.elastic.co/downloads/kibana/kibana-7.17.7-linux-x86_64.tar.gz \ https://artifacts.elastic.co/downlo…

BM77-最长的括号子串

题目 给出一个长度为 n 的,仅包含字符 ( 和 ) 的字符串,计算最长的格式正确的括号子串的长度。 例1: 对于字符串 "(()" 来说,最长的格式正确的子串是 "()" ,长度为 2 .例2:对于字符串 ")()…

AI Chat 设计模式:5. 策略模式

本文是该系列的第五篇,采用问答式的方式展开,问题由我提出,答案由 Chat AI 作出,灰色背景的文字则主要是我的旁白。 问题列表 Q.1 我想学习一下策略模式A.1Q.2 你先给我简单讲解一下吧A.2Q.3 你举得这个电商平台例子不错&#xf…

青岛大学_王卓老师【数据结构与算法】Week04_09_线性表的应用2_学习笔记

本文是个人学习笔记,素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享,另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权,请留言作删文处理。 课程视频链接: 数据结构与算法基础–…

使用 tail -f 实时观测服务器日志输出

在开发阶段, 有 console 端的输出, 总是可以方便实时地看到应用的日志. 可一旦应用部署到服务器上之后呢, 日志被输出到文件中, 在某些情景下需要不停地查看日志文件的输出以定位某些问题, 此时是否还能像开发那样实时查看日志呢? 答案是可以的! 这个命令就是 tail -f . tail…

vue2 element-ui 2.9.1版不支持抽屉el-drawer

一个老项目中想使用抽屉 el-drawer,死活没有反应。 查了下element-ui的版本是2.9.1 再看其他一个正常使用抽屉的项目的element-ui版本。 但是 2.14.1 的element-ui版本又存在菜单管理无法折叠菜单项的问题。 看来还是得抽空解决在2.14.1菜单无法折叠的问题了。

一文了解潜力黑马Infiblue:借力Web3,释放元宇宙价值

2013 年,JDN Dionisio 曾发表了一篇名为《3D Virtual Worlds and the Metaverse: Current Status and Future Possibilities》的论文,深入探讨与归纳了虚拟世界的几个发展阶段,可以简单的归纳为: 第一阶段:基于计算机文…

零代码量化投资:用ChatGPT获取新浪财经上的股票实时行情

现在很多免费的股票数据库,比如akshare,其实是从新浪财经或者东方财富网站上爬取下来的。如果能直接从新浪财经或者东方财富网站上爬取数据,可以获取更全面更即时的信息。 可以在ChatGPT中输入提示词如下: 写一段Python代码&…

探索stable-diffusion技术乐园:活学活用界面参数

开篇 嗨!欢迎踏入我们充满有趣和创新的stable-diffusion技术乐园,让我们一起走进stable-diffusion界面参数的世界,看看怎样如行家袋里取物般自在地活用这些参数! 看了这么多大V、大卡和群粉们使用的英文,提起来有点沉,别急,我会尽量使用轻松的语气带你一起探索这些小秘…

MySQL视图、索引、导入导出、执行计划

目录 一、前言 1.导读 2.学习的好处 二、视图 1.什么是视图 2.视图与数据表的区别 3.使用视图的优点 4.视图的语法 1.创建视图(CREATE VIEW) 2.查询视图数据 3.更新视图数据 4.修改视图定义(ALTER VIEW) 5.删除视图(DROP VIEW&a…