摘自: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 记录一次内存清理的更多相关文章

  1. 【mysql】关于IO/内存方面的一些优化

    这里使用的是mysql  Ver 14.14 Distrib 5.6.19, for Linux (i686) using  EditLine wrapper 一.mysql目录文件 ibdata1: ...

  2. MySQL学习笔记-数据库内存

    数据库内存 InnoDB存储引擎内存由以下几个部分组成:缓冲池(buffer pool).重做日志缓冲池(redo log buffer)以及额外的内存池(additional memory pool ...

  3. 提高mysql memory(heap) engine内存性能的开源补丁_XMPP Jabber即时通讯开发实践_百度空间

    提高mysql memory(heap) engine内存性能的开源补丁_XMPP Jabber即时通讯开发实践_百度空间 提高mysql memory(heap) engine内存性能的开源补丁

  4. ngx-push-stream模块源码学习(五)——内存清理

    1.定时器         采用nginx自身的定时器管理机制,具体细节待学习过nginx源码后加以补充 2.channel的生成周期 (0).初始(诞生)         发布.订阅均有可能产生ch ...

  5. linux memory release commands内存清理/释放命令

    linux 内存清理/释放命令 You could find reference from here: http://jingyan.baidu.com/article/597a06436a687f3 ...

  6. wing带你玩转自定义view系列(1) 仿360内存清理效果

    本篇是接自 手把手带你做自定义view系列 宗旨都是一样,带大家一起来研究自定义view的实现,与其不同的是本系列省去了简单的坐标之类的讲解,重点在实现思路,用简洁明了的文章,来与大家一同一步步学习. ...

  7. scala 可变集合与内存清理的关系

    留坑待填 使用scala.collection.mutable._期间,发现了当程序运行内存开销较多时,使用系统工具进行内存清理,然后程序报出了变量找不到.内存无法访问.数组访问越界,堆栈溢出等多种错 ...

  8. Go:内存管理与内存清理

    Illustration created for "A Journey With Go", made from the original Go Gopher, created by ...

  9. MySQL记录锁、间隙锁、临键锁小案例演示

    生成间隙(gap)锁.临键(next-key)锁的前提条件 是在 RR 隔离级别下. 有关Mysql记录锁.间隙(gap)锁.临键锁(next-key)锁的一些理论知识之前有写过,详细内容可以看这篇文 ...

随机推荐

  1. 跟我一起学QT_QT标准对话框_文件对话框

    标准对话框 QT的标准对话框分为以下几种 颜色对话框 文件对话框 字体对话框 输入对话框 消息对话框 进度对话框 错误信息对话框 向导对话框 文件对话框 QT中的文件对话框QFileDialog类提供 ...

  2. 洛谷$P3877\ [TJOI2010]$打扫房间 网络流

    正解:网络流 解题报告: 传送门$QwQ$ 昂考虑把题目的约束条件详细化?就说每个格点能向四连通连边,问能否做到每个格点度数等于2? $umm$就先黑白染色建两排点呗,然后就$S$向左侧连流量为2的边 ...

  3. 大数据学习之路-hdfs

    1.什么是hadoop hadoop中有3个核心组件: 分布式文件系统:HDFS —— 实现将文件分布式存储在很多的服务器上 分布式运算编程框架:MAPREDUCE —— 实现在很多机器上分布式并行运 ...

  4. vue项目准备工作

    1.写文档: 产品说明.工作日志.接口说明文档.数据库说明文档.项目架构说明文档等···· 例如:后台管理系统:商品的管理.店铺的管理.店铺类别管理.管理员的管理.用户管理等·····    前端渲染 ...

  5. Ant Design Pro路由传值

    Ant Design Pro 路由传值 了解Ant Design Pro组件间通讯原理的小伙伴肯定都知道,两个页面之间可以通过Models进行传值,在以往的传值过程中,我都是直接将需要的值直接一股脑的 ...

  6. 【官方文档翻译】SpringBootActuator生产特性

    翻译自 spring-boot 官方文档(版本:2.2.2.RELEASE) Spring Boot包含了许多附加功能,可以帮助您在将应用程序推送到生产环境时监视和管理它.您可以选择使用HTTP端点或 ...

  7. OpenLayers 笔记

    1.加载ArcGIS MapServer var pipeLayer=new ol.layer.Tile({ extent: [11827395.404512288,3049293.321033439 ...

  8. spring boot通过@Bean注解定义一个Controller

    功能需求 提供一个公共的jar包给其他业务模块依赖,需要在这个公共的jar中暴露一个restful API 采用spring auto config机制,在公共jar包中定义spring.factor ...

  9. 什么样的项目适合docker部署,docker应用场景

    docker官网上说明了docker的典型场景: 使应用的打包与部署自动化 创建轻量.私密的PAAS环境 实现自动化测试和持续的集成/部署 根据这些特性,我们可以想象一下,如果你的项目有如下痛点或者需 ...

  10. Serverless 微服务实践-移动应用包分发服务

    背景 阿里云函数计算是事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.函数计算会为您准备好计算资源,以弹性.可靠的方式运行您的代码,并提供日志查询.性能监控.报 ...