博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CentOS5.8 x86_64系统手动释放内存
阅读量:6281 次
发布时间:2019-06-22

本文共 1113 字,大约阅读时间需要 3 分钟。

线上集群后端某台Web服务器例行检查时,我观察到+buffers/cache值(即Linux内存的实际使用情况)一直都是5365左右,就算停掉Nginx+FastCGI程序和其它程序也是一样,考虑到这台机器经常在使用rsync+inotify,肯定会存在着频繁存取文件的情况。而Linux系统有一个特性:在Linux下频繁存取文件时,就会占用物理内存。当程序结束时并不会自动释放被占用的内存,而是一直作为Cache存在。实际上内核结束一个程序后,它是会释放内存的,但是内核并没有立刻将这部分收集到free当中,而是存在在cached或者buffer当中,提高系统的io效率,cache和buffered的内存是由内核进行动态的配置管理,如果系统的free大小不够的时候,系统会自动释放cache buffer的内存给程序使用(因此如果是看到used很多,来手动释放内存其实是不需要的,我前面的文章及书籍其实也说明了我们应该如何观察Linux系统的实际内存使用情况,这里就不再多描述了)。

操作步骤:

1、查询当前内存使用情况和释放缓存的参数

free -m

命令结果如示所示:

1
2
3
4
             
total       used       
free     
shared    buffers     cached
Mem:         10988       6792       4196          0        168       1001
-/+ buffers
/cache
:       5622       5365
Swap:         4295          0       4295

查看释放缓存参数的命令,如下所示:

1
cat 
/proc/sys/vm/drop_caches

系统默认显示为0,0为默认值,即表示不释放。


2、使用sync命令,将系统缓存区中的脏数据写入磁盘中,包括已修改的i-node、已延迟的块I/O和读写映射文件,命令如下:

1
sync

3、配置文件/proc/sys/vm/drop_caches中记录了缓存释放的参数,命令如下:

1
echo 
3 > 
/proc/sys/vm/drop_caches

4、不重启机器使配置改生效,命令如下:

1
sysctl -p

执行以上操作以后, +buffers/cache值由5365涨到了9500,这个值就恢复正常了。不过个人觉得Linux系统(尤其是CentOS系统)管理内存的方式其实是很优异的,很多时候并不需要手动释放内存;另外,工作中感觉rsync+inotify的方式还是存在着很多缺陷,正在慢慢将其往rsync+puppet环境迁移。

本文转自 抚琴煮酒 51CTO博客,原文链接:http://blog.51cto.com/yuhongchun/1430026,如需转载请自行联系原作者
你可能感兴趣的文章
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>
《Exchange Server 2010 SP1/SP2管理实践》——2.4 部署外部网络环境
查看>>
Firefox 是 Pwn2own 2014 上攻陷次数最多的浏览器
查看>>
阿里感悟(十八)- 应届生Review
查看>>
《计算广告:互联网商业变现的市场与技术》一第一部分 在线广告市场与背景...
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
《Arduino家居安全系统构建实战》——1.5 介绍用于机器学习的F
查看>>
jquery中hover()的用法。简单粗暴
查看>>
线程管理(六)等待线程的终结
查看>>
spring boot集成mongodb最简单版
查看>>
DELL EqualLogic PS存储数据恢复全过程整理
查看>>
《Node.js入门经典》一2.3 安装模块
查看>>
《Java 开发从入门到精通》—— 2.5 技术解惑
查看>>
Linux 性能诊断 perf使用指南
查看>>
实操分享:看看小白我如何第一次搭建阿里云windows服务器(Tomcat+Mysql)
查看>>
Sphinx 配置文件说明
查看>>
数据结构实践——顺序表应用
查看>>
python2.7 之centos7 安装 pip, Scrapy
查看>>