Linux系统内存占用90%以上——解决方法
2016-08-25 10:08
1041 查看
问题:
[root@dbserver01zx_epp_db]#free-m totalusedfreesharedbufferscached Mem:1595314706124603912687 -/+buffers/cache:197913973 Swap:8015277988
-------------------------------------------------------------------------------------------------------------------------------------------- 首先要明确一个问题:Linux系统内存占用90%以上,是否属于正常范围?网上有详细的解释,这属于正常现象~~~ Linux/Unix系统管理内存的方式和windows是不一样的,即便是一个负载很小的linux,跑几天后,内存占用量也将达到90%以上,即便无人访问,这个数字是完全正常的。但是,这个内存占用量不会达到100%的,每天夜里系统都会执行/etc/cron.daily进行内存优化。 Linux/Unix系统是非常稳健的,虽然内存占用显示90%以上,但依然可保证365天以上无须重启。对于Linux系统,评估其压力的主要指标是最近5分钟的负载指数:比如用w命令或者top去看,可以看到“0.700.350.01”这样的数字,分别表示5分钟内的、10分钟内的、15分钟内排队的进程数,只要第一个数字即5分钟内的负载不大于5,系统就是健康的,不用做任何维护;如果这个数字大于了5,那么通常系统速度就会变慢,一般有如下几种可能: 1)有程序占用大量CPU,使用top命令来检查(看看是否有java程序锁死之类的故障) 2)有程序占用大量内存,使得内存真正不够用了(这个才是真正需要加内存的时候),比如由于MySQL在较大负载下运行容量为GB级别的数据库导致内存不够用,需要给服务器插入更多物理内存 3)磁盘系统读写故障,IO吞吐错误造成CPU负载上升,需要光盘引导进入单用户模式扫描修复磁盘,修不好就只能更换新硬盘了 因此,对于Linux/Unix系统内存占用的百分比,无须过于关心,一般检查系统负载参数即可 但也可以手动进行内存释放,具体操作如下:
首先,/proc/sys/vm/drop_caches的值,默认为0
[root@dbserver01mysql]#sync
手动执行sync命令(描述:sync命令运行sync子例程。如果必须停止系统,则运行sync命令以确保文件系统的完整性。sync命令将所有未写的系统缓冲区写到磁盘中,包含已修改的i-node、已延迟的块I/O和读写映射文件)
[root@dbserver01mysql]#echo3>/proc/sys/vm/drop_caches [root@dbserver01mysql]#cat/proc/sys/vm/drop_caches 3
将/proc/sys/vm/drop_caches值设为3
再来运行free命令,发现现在的used为66MB,free为182MB,buffers为0MB,cached为11MB.那么有效的释放了buffer和cache.
相关文章推荐
- tigerVNC 使用简介
- linux 最大文件打开数nofile及nr_open、file-max说明
- linux 学习总纲:目标与方向
- linux之sed用法
- linux yum命令详解
- centos 建立ssh
- 操作系统原理Linux篇 读书笔记(1)——进程管理
- CentOS 6.5 安装 MySQL5.6 并用Navicat for MySQL 连接
- CentOS6下Haproxy的安装配置
- linux学习系列1:环境安装
- linux系统搭建小型FTP服务,实现Windows控制权限
- linux解压命令简单总结
- 每天一条Centos笔记--ls命令
- centos下排查vsftpd出现put零字节问题的记录
- linux3.4版本内核make出现的错误----缺少compiler-gcc5.h
- Linux安装 对硬盘进行分区解决方案
- 关于Ubuntu14.04下的ulimit的限制问题
- Linux下多核、GPU编程
- 互斥锁、条件变量、信号量
- centos6.x下安装eclipse