linux 手工释放内存 高内存 内存回收 方法思路
来源:互联网 发布:杭州淘宝客服真实工资 编辑:程序博客网 时间:2024/05/17 18:00
linux 跑的apache,apache工作模式有 Prefork、Worker和 Event 三种,分别是基于进程、线程、综合模式。
root@server test]# cat /proc/sys/vm/drop_caches
To free pagecache: 清空 页面 高速缓存
* echo 1 > /proc/sys/vm/drop_caches
本文中使用的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(块设备)的数据。
是根据磁盘的读写 设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,
从而提高系统性能。
shared 表示被几个进程共享的内存的。
buffer 缓冲 是用于存放要输出到disk(块设备)的数据。
是根据磁盘的读写 设计的,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,
从而提高系统性能。
cache 缓存 是存放从disk上读出的数据。是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不 要去读硬盘了,若没有命中就读硬盘。其中的数据会根据读取频率进行组织,把最频繁读取的内容放在 最容易找到的位置,把不再读的内容不断往后排,直至从中删除。
如果cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁 盘的读IO bi会非常小。
如果cache 的值很大,说明cache住的文件数很多。如果频繁访问到的文件都能被cache住,那么磁 盘的读IO bi会非常小。
第二行:
这一行表示两项 -buffers/cache 和 + buffers/cache
-buffers/cache = used -(buffers+cache) 表示使用的内存中不计算buffers和cache,系统使用内存量
+ buffers/cache =free+( 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的详细文档如下:
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
* echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes: 清空以上两项
* echo 3 > /proc/sys/vm/drop_caches
从man可以看到,这值从2.6.16以后的核心版本才提供,也就是老版的操作系统都是没有这个的。
阅读全文
0 0
- linux 手工释放内存 高内存 内存回收 方法思路
- 手工释放linux内存
- 如何手工释放linux内存?
- 如何手工释放linux内存
- 如何手工释放Linux内存
- 如何手工释放linux内存
- 如何手工释放linux内存
- 如何手工释放linux内存
- Linux 释放内存方法
- Linux 释放内存方法
- linux释放内存方法
- Linux 释放内存方法
- Linux 释放内存方法
- Linux 释放内存方法
- 在Linux系统上手工释放内存
- linux系统内存怎么手工释放
- 手工释放linux内存 Cache drop_caches
- 释放linux驻留内存方法
- 实验三 Linux文件管理
- Docker入门系列(三):让你的应用变为可扩展的服务
- <C++>shared_ptrs利用std::enable_shared_from_this()实现安全管理this指针
- matlab灰度直方图的2种绘制方法
- 在Eclipse中使用JUnit4进行单元测试
- linux 手工释放内存 高内存 内存回收 方法思路
- php 错误级别日志
- 数组
- 12、信号(2)
- Docker入门系列(四):让你的服务跨越多台机器
- HDU 5188 zhx and contest 基础DP.
- Java_==与equals
- 用html,css制作一个三角形
- NGINX配置多域名