博士有几台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了。

Logo

更多推荐