• 清除linux内存buff/cache


    buff/cache内存占用太高

    使用服务器时感觉到明显卡顿,输入free -h命令查看内存占用

    [root@shanghai mysql8] free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.8G        846M        108M         29M        882M        772M
    Swap:            0B          0B          0B
    
    • 1
    • 2
    • 3
    • 4

    buffer和cache产生的原因

    当你的服务进程在对文件进行读写的时候,Linux内核为了提高服务的读写速度,则将会把文件放在此处的 buffer/cache 中进行缓存使用,
    由于 Linux服务的特点便是任何事物都会以文件的形式进行存在,所以你会发现不管你是否对文件做了大规模的读写,
    机器的 buffer/cache 是一直都存在的,并且持续的增高不下,这是因为服务器所产生的网络连接也好,
    用户协议的(UDP)套接字也好,这部分的数据系统都会为应用程序创建对应的文件描述符,
    而这些文件描述符的使用,则又都会重新进入 buffer/cache 中做读写使用,所以这也是你的机器始终都会存在较高 buffer/cache 的原因

    简单来说,buff是即将要被写入磁盘的,而cache是被从磁盘中读出来的。

    输入清理代码,将缓存写到磁盘

    # 将所有未写的系统缓冲区写到磁盘中
    sync
    # 清除page cache
    echo 1 > /proc/sys/vm/drop_caches
    # 清除回收slab分配器中的对象(包括目录项缓存和inode缓存)。slab分配器是内核中管理内存的一种机制,其中很多缓存数据实现都是用的pagecache。
    echo 2 > /proc/sys/vm/drop_caches
    # 清除pagecache和slab分配器中的缓存对象。
    # /proc/sys/vm/drop_caches的值,默认为0
    echo 3 > /proc/sys/vm/drop_caches
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    清除buff/cache后,查看内存占用

    输入free -h命令查看内存占用

    [root@shanghai mysql8] free -h
                  total        used        free      shared  buff/cache   available
    Mem:           1.8G        847M        812M         29M        177M        810M
    Swap:            0B          0B          0B
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    【动态规划 状态机dp 性能优化】3098. 求出所有子序列的能量和
    C语言实战小项目(三)通讯录
    21. 合并两个有序链表 ●
    智能客户端平台体系结构指南
    三、PL/SQL中的SQL
    代码随想录训练营 单调栈
    计算机毕业设计Java敬老福利院管理(源码+系统+mysql数据库+lw文档)
    设计模式的七大原则
    用于非线性时间序列预测的稀疏局部线性和邻域嵌入(Matlab代码实现)
    Openstack部署
  • 原文地址:https://blog.csdn.net/weixin_43702146/article/details/127612496