当前位置:网站首页 / Linux / 正文

centos7内存占用过高处理方法

时间:2020年04月09日 | 作者 : liuhui | 分类 : Linux | 浏览: 5851次 | 评论 0

阿里云限量代金券 | 此广告位出租25元/月

博士有几台frps服务器都出现了内存占用过高的现象,然后会出现CPU使用率飙升,网上找到这个清理buff/cache缓存脚本,希望有效果。

博士在找到这个脚本的时候也学到了一个关于Linux的知识点,内存用满并不是说不好,这恰恰是Linux内存管理的一个优秀特性,在这方面,区别于 Windows的内存管理。主要特点是,无论物理内存有多大,Linux都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。

运行该脚本之前我们先执行这个命令cat /proc/sys/vm/drop_caches

我们发现drop_caches默认值为0

创建mem.sh脚本

#!/bin/bash
exec &>> /var/log/mem.log
Free=`free -m|awk 'NR==2 {print $4}'`
if [ $Free -lt 200 ];then
sync
echo 3 > /proc/sys/vm/drop_caches
fi

可以按照自己的生产环境,进行修改脚本,上面脚本中的sync指令作用是将所有未写的系统缓冲区写到磁盘中,包含已修改的i-node、已延迟的块I/O和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。

使用方法

sh ./mem.sh

加入crontab定时任务,每分钟检查一次

* * * * * /bin/sh /root/mem.sh >/dev/null 2>&1

关于drop_caches文件数值的说明,博友们有兴趣可以研究一下:

0-不释放
1-释放页缓存
2-释放dentries和inodes
3-释放所有缓存

查看内存使用的正确方法

运行命令free

[root@localhost ~]# free -hm
              total        used        free      shared  buff/cache   available
Mem:           3.7G        3.2G        216M        183M        270M        142M
Swap:          3.0G        200M        2.8G

详解:

1、total:总的物理内存

2、used:系统使用的内存,包括buff+cache。并非系统真正使用的内存。系统真正使用的内存=used-buff/cache

3、free:空闲的内存,系统未使用的内存,并不是系统启动应用程序可以真正使用的内存。

4、shared:共享内存

5、buff/cache:磁盘缓存的大小

6、available:在旧版free中,没有这个选项。这个选项指的是,系统启动程序时可以利用的内存,当这个选项很小或者不够启动程序所需的内存,会提示系统内存不足,无法启动,此时就需要处理问题,是物理内存真的不足,还是清理系统缓存。


这时再次查看drop_caches默认值已经变成3了。

推荐您阅读更多有关于“”的文章

猜你喜欢

网站分类
关注电脑博士
友情链接

分享:

支付宝

微信