写在前面


  • 一个群里看到有小伙伴问,之前也有遇到过。
  • 给了参考意见之后感觉好像不是特别对,有点误人子弟:(。
  • 所以总结下,博文内容涉及
    • Linux内存查看监控
    • 缓存清理及参数介绍
    • 一个定时清理的脚本

归根结底,长得好,无论男女,怎么都是对的,长得不好看,大概就是万般皆罪。 ——烽火戏诸侯《剑来》


嗯,关于缓存清理,小伙伴一定不陌生,个人觉得通过修改drop_caches内核参数的形式来清理缓存,只能是在生产环境用于临时解决问题,本质还是要对应用进行分析,看看是什么原因导致的内存溢出等OOM问题,一般情况下,内存溢出可以通过交换分区来确定

当然,如果是因为业务量的原因,业务高峰,或者需要算力等正常原因,可以定期通过sync将缓存区没有写入数据写入磁盘,然后修改内核参数 drop_caches的值来清理缓存,或者通过新建交换分区调整swappiness交换分区频率来解决问题,如果虚机的话可以申请扩内存

系统内存查看

系统内存查看

其中: Mem:实际的内存 | Swap: 交换分区 |

  • total 内存总数
  • used 已经使用的内存数
  • free 空闲的内存数
  • shared 多个进程共享的内存总额
  • buff/Cache 缓存的内存大小
  • available 可用内存

free 与 available 的区别:free 是真正尚未被使用的物理内存数量。available 是应用程序认为可用内存数量,available = free + buffer + cache (注:只是大概的计算方法)

系统内存监控

系统内存监控

vmstat: 是一个内存监控工具,后面的数字为刷新频率 | top 不多说

vmstat 列描述
free 空闲的物理内存的大小。
buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存.
cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)

修改drop_caches内核参数清理缓存

我们先看看帮助文档:内核参数的帮助文档查看方式

┌──[root@liruilongs.github.io]-[/proc/sys/vm]
└─$ man -K drop_caches
--Man-- next: proc(5) [ view (return) | skip (Ctrl-D) | quit (Ctrl-C) ]

嗯,英文好的小伙伴可以看看

drop_cachesWriting to this will cause the kernel to drop clean caches, as well as
reclaimable slab objects like dentries and inodes.  Once dropped, their
memory becomes free.To free pagecache:echo 1 > /proc/sys/vm/drop_caches
To free reclaimable slab objects (includes dentries and inodes):echo 2 > /proc/sys/vm/drop_caches
To free slab objects and pagecache:echo 3 > /proc/sys/vm/drop_cachesThis is a non-destructive operation and will not free any dirty objects.
To increase the number of objects freed by this operation, the user may run
`sync' prior to writing to /proc/sys/vm/drop_caches.  This will minimize the
number of dirty objects on the system and create more candidates to be
dropped.This file is not a means to control the growth of the various kernel caches
(inodes, dentries, pagecache, etc...)  These objects are automatically
reclaimed by the kernel when memory is needed elsewhere on the system.Use of this file can cause performance problems.  Since it discards cached
objects, it may cost a significant amount of I/O and CPU to recreate the
dropped objects, especially if they were under heavy use.  Because of this,
use outside of a testing or debugging environment is not recommended.You may see informational messages in your kernel log when this file is
used:cat (1234): drop_caches: 3These are informational only.  They do not mean that anything is wrong
with your system.  To disable them, echo 4 (bit 2) into drop_caches.

手动执行sync命令(描述:sync 命令运行 sync 子例程。如果必须停止系统,则运行sync 命令以确保文件系统的完整性。sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)

┌──(root												

关于 Linux中缓存清理的一些笔记相关推荐

  1. linux中proc文件系统 -- ldd3读书笔记

    1./proc 文件系统概述 /proc 文件系统是由软件创建,被内核用来向外界报告信息的一个文件系统./proc 下面的每一个文件都和一个内核函数相关联,当文件的被读取时,与之对应的内核函数用于产生 ...

  2. 关于 Linux 中安全方面的一些笔记

    写在前面 笔记是学习整理的,大都老师讲课内容,适合温习,不适合新手.整理了一份,希望对小伙伴有帮助. 生活加油,天天开心!博文主要围绕以几个方面: Linux基本防护:账户安全.文件系统安全.关闭不需 ...

  3. linux中gnuplot给定文本,gnuplot笔记(四)

    >第四章 1. 设置命令 主要有set,unset,reset三个,显示设置的命令是show 如set style function points unset style function po ...

  4. Linux中常见的环境变量笔记

    1.变量:BASH Bash Shell的全路径 比如:echo $BASH 2.变量:BASH_VERSION Bash Shell的版本号 3.变量:EUID 记录当前用户的UID.root用户值 ...

  5. linux 服务器缓存清理

    -b,-k,-m,-g show output in bytes, KB, MB, or GB k,m,g显示输出字节,KB,MB,或GB -h human readable output (auto ...

  6. Linux中Shell的转义用法笔记

    1.转义 转义是指用转义符引用单个字符,从而使其表达单纯的字符含义.Shell中的转义符是反斜线"\",通过转义字符使其后面的字符单纯的出现,而不去解释 其特殊的含义. 比如:如果 ...

  7. Linux中shell变量基础概念笔记

    1.变量的概念 其实shell中的变量是指向系统中一块存储数据的内存空间.变量的形式有局部变量和环境变量两种.并且shell变量属于弱类型的变量,可以不指定变量的类型就可以使用. 2.局部变量 局部变 ...

  8. Linux shell命令示例介绍-个人笔记

    转载: https://blog.csdn.net/zhangwu1241/article/details/60871000 Linux中命令示例介绍-个人笔记 为了方便以后查阅,会对在Linux学习 ...

  9. Linux 清空缓存命令

    某些时候需要把linux 的缓存清理一下.使用时需要区分参数的不同 0:不做任何处理,由系统自己管理 1清空pagecache 2清空dentries和inodes 3 清空pagecache.den ...

最新文章

  1. 一棵树的生成树有几颗_次小生成树(树剖,生成树)
  2. linux发行版本在这里。
  3. mysql怎么滤空_《MySQL 入门教程》第 08 篇 过滤条件
  4. .net开发微信公众平台
  5. CentOS7上GitLab的使用
  6. AWS机器学习初探(1):Comprehend - 自然语言处理服务
  7. ThinkPHP源码学习之一
  8. 去越南旅游一个人玩一个月需要多少人民币?
  9. 通过 PXE 自动安装操作系统:部署 PXE Server
  10. 电学 —— 家庭用电中的电学现象
  11. cad添加自己线性_如何自定义自己需要的CAD线型?
  12. CAD批量输入坐标生成红线
  13. wav格式怎样转换成flac
  14. 贪心算法解决汽车加油问题
  15. IB文学:如何评论现代诗歌?
  16. 山东省高中学业水平考试计算机考试教材,2017年山东高中学业水平考试科目
  17. 影响蜂糖李苗花芽分化的因素
  18. xv6 6.S081 Lab5: cow
  19. 在Mac上修复问题硬盘是如何操作的
  20. 《在难搞的日子笑出声来》

热门文章

  1. Win10安装GCC/G++运行环境
  2. linux下C语言修改文件权限
  3. 冯诺依曼计算机中运算器的功能,青书学堂: (单选题) 冯·诺依曼计算机由五大部分组成,运算器是其中之一。它完成的功能包括______。(本题1.0分)...
  4. jupyter notebook显示内核正忙
  5. AX功能索引(Dynamics AX 2012 R3 CU12)
  6. 公司注册商标有哪些流程及费用?
  7. 二、风险和收益成正比
  8. IDEA:解决代码没有提示问题
  9. 使用ffmpeg錄影mp4, 檔案不能播放
  10. 欧洲半导体产业寻求迫切的政府行动