mysql 记录一次内存清理
摘自:https://blog.csdn.net/wyzxg/article/details/7279986/
摘要:Linux对内存的管理与Windows不同,free小并不是说内存不够用了,应该看的是free的第二行最后一个值:"-/+ buffers/cache: 58 191" 这才是系统可用的内存大小。
记录一次维护记录
在放假回来后,发现服务器内存没有剩余空间了,并且使用了swap分区。
维护目标:释放内存,关闭SWAP分区的使用。

分析原因:
疑点1:
https://blog.csdn.net/dc666/article/details/78901341
按上文的思路,发现有疑点,有长期运行的SQL,
mysql> show full processlist;
*************************** 3. row ***************************
Id: 143
User: slave
Host: 192.168.101.103:3306
db: NULL
Command: Binlog Dump
Time: 3557004
State: Master has sent all binlog to slave; waiting for more updates
Info: NULL
*************************** 4. row ***************************
疑点2:
mysql> show engine innodb status\G;
BUFFER POOL AND MEMORY
----------------------
Total large memory allocated 120937512960
Dictionary memory allocated 34511769
Buffer pool size 7208520
Free buffers 8196
Database pages 7199134
Old database pages 2657328
Modified db pages 1531
引擎的已经没有可用空间,应该是innodb_buffer_pool满了;怀疑是被执行计划占用满了。
处理:通过杀掉进程,flush tables等操作,问题依旧没有解决,所以也没搞清楚问题出在哪。但不清楚出问题的具体原因,也一样能解决问题。
mysql的体系结构,与oracle的不同,很重要的一点,对mysql对内存的管理上,是通过系统OS层实现的,通过清理释放系统内存,一样能达到目的。
清理之前的内存使用情况:

[root@~]# sync
[root@~]# cat /proc/sys/vm/drop_caches [root@~]# echo > /proc/sys/vm/drop_caches
清理之后的状态:

通过 echo 3 > /proc/sys/vm/drop_caches,释放了大约28G内存。
当在Linux下频繁存取文件后,物理内存会很快被用光,当程序结束后,内存不会被正常释放,而是一直作为caching。
linux 文件系统的 cache 分为2种:page cache 和 buffer cache, page cache 是用于文件,inode 等操作的 cache,而 buffer cache 是用于块设备的操作。
将/proc/sys/vm/drop_caches设置为1、2、3的作用:
To free pagecache:
# echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
# echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
关闭SWAP分区
通过free -m,可以查得SWAP使用情况,当前已经使用了约10G,

释放SWAP分区

通过实际记录,释放约10G的交换文件,用时达4小时,而释放约20G内存,耗时不过10秒左右,这由硬件I/O性能决定。
验证结果

没有内容返回,说明当前SWAP分区已经禁用。
对于SWAP分区的使用,当服务器的内存容量,并不能完全满足使用要求时,有限的开启SWAP使用,是有益的,vm.swappiness参数的作用,
是设定使用SWAP的优先级,数字越大,优先级越高,可以适当降低SWAP的优先级,来避免SWAP被过多使用。
[root@~]# sysctl -q vm.swappiness #查询当前SWAP优先级
vm.swappiness =
[root@~]# sudo sysctl vm.swappiness= #修改
vm.swappiness =
[root@ ~]# sysctl -q vm.swappiness #验证
vm.swappiness =
欢迎大佬指正。。
mysql 记录一次内存清理的更多相关文章
- 【mysql】关于IO/内存方面的一些优化
这里使用的是mysql Ver 14.14 Distrib 5.6.19, for Linux (i686) using EditLine wrapper 一.mysql目录文件 ibdata1: ...
- MySQL学习笔记-数据库内存
数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...
- 提高mysql memory(heap) engine内存性能的开源补丁_XMPP Jabber即时通讯开发实践_百度空间
提高mysql memory(heap) engine内存性能的开源补丁_XMPP Jabber即时通讯开发实践_百度空间 提高mysql memory(heap) engine内存性能的开源补丁
- ngx-push-stream模块源码学习(五)——内存清理
1.定时器 采用nginx自身的定时器管理机制,具体细节待学习过nginx源码后加以补充 2.channel的生成周期 (0).初始(诞生) 发布.订阅均有可能产生ch ...
- linux memory release commands内存清理/释放命令
linux 内存清理/释放命令 You could find reference from here: http://jingyan.baidu.com/article/597a06436a687f3 ...
- wing带你玩转自定义view系列(1) 仿360内存清理效果
本篇是接自 手把手带你做自定义view系列 宗旨都是一样,带大家一起来研究自定义view的实现,与其不同的是本系列省去了简单的坐标之类的讲解,重点在实现思路,用简洁明了的文章,来与大家一同一步步学习. ...
- scala 可变集合与内存清理的关系
留坑待填 使用scala.collection.mutable._期间,发现了当程序运行内存开销较多时,使用系统工具进行内存清理,然后程序报出了变量找不到.内存无法访问.数组访问越界,堆栈溢出等多种错 ...
- Go:内存管理与内存清理
Illustration created for "A Journey With Go", made from the original Go Gopher, created by ...
- MySQL记录锁、间隙锁、临键锁小案例演示
生成间隙(gap)锁.临键(next-key)锁的前提条件 是在 RR 隔离级别下. 有关Mysql记录锁.间隙(gap)锁.临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文 ...
随机推荐
- 它来了,它来了,centos 8 的时代到来了
简介 Centos 8 已经在2019年9月24日正式发布.由于这是从Red Hat Enterprise Linux(RHEL)派生的Linux发行版,因此CentOS团队必须构建基础结构来支持新引 ...
- jquery中动态添加的标签绑定的click事件失效的解决办法
把.click()换成.live('click',function(){})(如果你的jquery的版本是1.10之前) 把.click()换成.on('click',function(){})(jq ...
- 最长无重复子串问题 leetcode 3
一.代码及注释 class Solution { public: int lengthOfLongestSubstring(string s) { int n = s.size(); //字符串的长度 ...
- 洛谷$P5038\ [SCOI2012]$奇怪的游戏 二分+网络流
正解:二分+网络流 解题报告: 传送门$QwQ$ 这种什么,"同时增加",长得就挺网络流的$QwQ$?然后看到问至少加多少次,于是考虑加个二分呗?于是就大体确定了做题方向,用的网络 ...
- getopt命令
最近学习了一下getopt(不是getopts)命令来处理执行shell脚本传入的参数,在此记录一下,包括长选项.短选项.以及选项的值出现的空格问题,最后写了个小的脚本来处理输入的参数 首先新建一个t ...
- 到底如何配置 maven 编译插件的 JDK 版本
千言万语不及官方文档,详情请阅读 compiler:compile 文档 配置 maven 编译插件的 JDK 版本 maven 编译插件(maven-compiler-plugin)有默认编译 JD ...
- Docker——WIN7 安装 Docker实战与入门
1.Docker简介 Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Lin ...
- python方法的重写
方法的重写: 在子类中重写定义一个父类拥有的方法, 调用时使用子类中重写定义的方法. 效果图: 代码: class Animal: def run(self): print('动物会跑~~~') de ...
- NPOI读取Excel的数据
首先是给项目安装NPOI.DLL :Install-Package NPOI -Version 2.4.1 HttpPostedFile upLoadPostFile = FileUpload1.Po ...
- CDH安装详细测试正确
1. CDH简介 简单来说,Cloudera Manager是一个拥有集群自动化安装.中心化管理.集群监控.报警功能的一个工具(软件),使得安装集群从几天的时间缩短在几个小时内,运维人员从数十人降低到 ...