top查看buff/cache过高
查看
top
效果如下:
KiB Mem :  16000000 total,   4000000 free,  4000000 used,   8000000 buff/cache
发现,使用不高,但是可用很低,是因为 buff/cache 占用了很多。
原因
linux存取文件会导致内存被用光,即便是程序结束后也不会被正常释放,这就会导致buffers和cached占用过高。
total:是指计算机总物理内存
used:已用的内存
free:空余的内存
total = used + free总内存
shared:被多个进程共享的内存
buffers:用于存放要输出到disk(块存储)的数据,在这里buff是指被OS buffer住的内存
cached:存放从disk上读出的数据;buffer和cache是为了提高IO性能并由OS管理
解决方法
linux有先进的缓存机制,会针对dentry、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作用来提高读写效率。但是在进行了大量文件操作之后,缓存会把内存资源基本用光,虽然文件读取效率提高了,但是物理内存会逐渐被吃光。
服务进行了频繁的文件读写操作,但是为什么操作系统不会主动回收呢,是因为drop_caches的默认参数设置的就是不释放的。
drop_caches的值可以是0-3之间的数字,代表不同的含义:
0:不释放(系统默认值)
1:释放页缓存
2:释放dentries和inodes
3:释放所有缓存
通过命令行清除:
# 查看drop_caches当前值 cat /proc/sys/vm/drop_caches echo 1 > /proc/sys/vm/drop_caches
    博客里大都是转载的内容,其目的主要用户知识的组织和管理。
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号