Linux运维案例 | cache 缓存释放

网友投稿 1048 2022-10-03

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

Linux运维案例 | cache 缓存释放

  • 一、缓存介绍

  • 二、如何释放缓存

  • 三、释放步骤

一、缓存介绍

  • Linux 系统的缓存机制会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作。

  • 但是在进行了大量文件操作之后,缓存会把内存资源基本用光。但实际上我们文件操作已经完成,这部分缓存已经用不到了,但是系统不会主动进行释放。

  • 导致系统使用SWAP内存从而影响服务器性能,此时就需要执行释放内存(清理缓存)的操作了。

二、如何释放缓存

  • 要达到释放缓存的目的,主要是对系统配置文件/proc/sys/vm/drop_caches
    进行修改。

系统文件 /proc/sys/vm/drop_caches
有如下3个值:

数字功能
0默认值,不释放缓存
1释放 page cahce
2释放 dentry 和 inodes
3释放 page cache,dentry,inode(释放所有缓存)

三、释放步骤

  • 有时候某个程序,如MySQL在大事务查询时会占用大量内存,使用后内存并没有释放,在 buff/cache
    占用,而free中的内存缺很少,可以进行释放。
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           9013        2469        5873           4         670        6416
Swap:          2047          27        2020

  • 释放过程我们需要先使用sync
    指令,将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。
free -m
sync
echo 1 > /proc/sys/vm/drop_caches
free -m

END

上一篇:如何查看TcaplusDB运行情况?专业运维看这篇
下一篇:【开发者的Linux运维课】001 为什么要学Linux?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~