摘自: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 =

欢迎大佬指正。。

最新文章

  1. retrofit2的get和post
  2. 从委托到Lambda
  3. .vimrc vim 配置大全
  4. 使用DBUnit框架数据库插入特殊字符失败的查错经历
  5. dubbo 教程
  6. [New Portal]Windows Azure Virtual Machine (10) 自定义Windows Azure Virtual Machine模板
  7. AndroidSdk离线下载
  8. jdk .tar.gz 包安装 inAction
  9. 算法导论(第三版)Exercises2.3(归并排序、二分查找、计算集合中是否有和为X的2个元素)
  10. 从lca到树链剖分 bestcoder round#45 1003
  11. backgroud背景色样式兼容ie8 rgba()用法
  12. bzoj 1083: [SCOI2005]繁忙的都市 (最小生成树)
  13. Linux那些事儿之我是Hub(大结局)挂起自动化【转】
  14. POJ 2312:Battle City(BFS)
  15. 什么是Shell、Shell脚本
  16. android 的 ExpandableListView Example Tutorial
  17. UOJ188. 【UR #13】Sanrd
  18. 【UNIX网络编程】FIFO
  19. 越来越不习惯客户端了,于是卸载了xmapp,重新配置了php+apache+mysql
  20. 添加用户-查看用户列表-禁止默认root登陆

热门文章

  1. CodeForces - 1239A
  2. 洛谷p-1522又是Floyd
  3. 构建锁与同步组件的基石AQS:深入AQS的实现原理与源码分析
  4. DEVOPS技术实践_19:Pipeline的多参数json调用
  5. 001JZ2440开发板熟悉与使用
  6. selenium自动化测试之--验证码处理
  7. Jmeter基础学习-下载及安装
  8. POJ 2456 Aggressive cows (二分)
  9. C# 阿里云查询、删除文件
  10. 【转】Java实现折半查找(二分查找)的递归和非递归算法