linux 手工释放内存 高内存 内存回收 方法思路
root@server test]# cat /proc/sys/vm/drop_caches
To free pagecache: 清空 页面 高速缓存
* echo 1 > /proc/sys/vm/drop_caches
发布日期:2021-11-09 11:16:44
浏览次数:39
分类:技术文章
本文共 1944 字,大约阅读时间需要 6 分钟。
linux 跑的apache,apache 工作模式 有 Prefork、Worker和 Event 三种,分别是基于进程、线程、综合模式。 本文中使用的apache是 Event 模式,在访问量上来之后,linux服务器总共60G的内存占用持续升高,于是将内存容量扩大,升高至120G。经过一段时间后发现,内存占用继续升高,几乎将120G占满,网站访问速度急速下降,页面打开时间甚至到达10s。
最先采取措施是重启linux服务器以此来释放内存,但是内存不到半个月几乎又要被占满了,于是在网上搜寻一下方法,以供参考。
第一部: 首先讲一个命令:free 来查看下服务器内存的使用情况
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 2703 1013 1690 0 116 235
-/+ buffers/cache: 660 2043
Swap: 3999 0 3999
先来解释第一行:
Mem的 Total=used+free used使用内存 free空闲内存 shared 表示被几个进程共享的内存的。 buffer 缓冲 是用于存放要输出到disk(块设备)的数据。 是根据磁盘的读写 设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道, 从而提高系统性能。
cache 缓存 是存放从disk上读出的数据。是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不 要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在 最容易找到的位置,把不再读的内容不断往后排,直至从中删除。 如果cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁 盘的读IO bi会非常小。
第二行:
这一行表示两项 -buffers/cache 和 + buffers/cache - buffers/cache = used -(buffers+cache) 表示使用的内存中不计算buffers和cache,系统使用内存量 + buffers/cache =free+( buffers+cache) 表示系统空闲内存与buffers、cache的和
第三行:
交换内存 使用量 空限量
第二部:修改 drop_cache 文件,手工释放内存
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段。也就是说可以通过修改/proc中的文件,来对当前kernel的行为做出调整。
那么我们可以通过调整/proc/sys/vm/drop_caches来释放内存。操作如下: root@server test]# cat /proc/sys/vm/drop_caches
0
/proc/sys/vm/drop_caches的值,默认为0。[root@server test]# sync
手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
[root@server test]# echo 3 > /proc/sys/vm/drop_caches [root@server test]# cat /proc/sys/vm/drop_caches 3
将/proc/sys/vm/drop_caches值设为3
第三部:drop_caches的详细文档如下: Writing to this will cause the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
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
从man可以看到,这值从2.6.16以后的核心版本才提供,也就是老版的操作系统都是没有这个的。
转载地址:https://blog.csdn.net/zonghua521/article/details/78238886 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月23日 09时35分17秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MediaWiki安装
2021-06-30
Squid安装
2021-06-30
如何查看当前Linux的版本
2021-06-30
Ubuntu安装Nginx
2021-06-30
Ubuntu 下安装thttpd Web服务器
2021-06-30
用thttpd做Web Server
2021-06-30
服务器端开发经验总结 Linux C语言
2021-06-30
将网站程序放在tmpfs下
2021-06-30
使用Nginx的proxy_cache缓存功能取代Squid
2019-04-27
nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除
2019-04-27
nginx 的proxy_cache才是王道
2019-04-27
Nginx proxy_cache 使用示例
2019-04-27
Nginx源代码分析 - 日志处理
2019-04-27
使Apache实现gzip压缩
2019-04-27
Memcached在大型网站中应用
2019-04-27
Hadoop简要介绍
2019-04-27
squid中的X-Cache和X-Cache-Lookup的意义
2019-04-27
squid 优化指南
2019-04-27
centos vnc配置笔记
2019-04-27
让Squid 显示本地时间
2019-04-27