linux内存和缓冲区,如何在Linux上清除内存的缓存,缓冲区和交换空间

9435-16102QJ355315.jpg

与其他任何操作系统一样,GNU / Linux实现的内存管理不仅有效,而且更好. 但是,如果有任何进程吞噬了您的内存,而您想清除它,Linux提供了一种刷新或清除RAM缓存的方法.

84b2df5671e370fee642bf3fcfefb79a.png

如何在Linux中清除缓存(Cache)?

每个Linux系统都有三个选项来清除缓存,而不会中断任何进程或服务.

(LCTT注释: 缓存,翻译为“缓存”,是指CPU和内存之间的高速缓存. 缓冲区,翻译为“缓冲区”,是指写入磁盘之前存储和内存的内容. 文章,有时将“缓冲区和缓存”一起提到. )

仅清除页面​​缓存(PageCache)

# sync; echo 1 > /proc/sys/vm/drop_caches

清除目录条目和索引节点

# sync; echo 2 > /proc/sys/vm/drop_caches

0cd6b4835b1c60529820806e77dd3050.png

清除页面缓存,目录条目和索引节点

# sync; echo 3 > /proc/sys/vm/drop_caches

上述命令的说明:

sync将刷新文件系统缓冲区. 命令之间用“;”分隔并按顺序执行. Shell将等待命令终止,然后再执行序列中的下一个命令. 如内核文档中所述,写入drop_cache将清除缓存,而不会终止任何应用程序/服务. echo命令完成写入文件的工作.

如果必须清除磁盘缓存,则第一个命令在企业和生产环境中是最安全的,“ ... echo 1> ...”将仅清除页面​​缓存. 除非您知道自己在做什么,否则不建议在生产环境中使用上面的第三个选项“ ... echo 3> ...”,因为它会清除缓存页面,目录条目和索引节点.

释放Linux内核可能使用的缓冲区和缓存是个好主意吗?

当您设置许多设置并要检查效果时,如果它实际上是专门针对I / O范围的基准测试,则可能需要清除缓冲区和缓存. 您可以如上所述删除缓存,而无需重新启动系统(即,无需停机).

Linux旨在在查找磁盘之前先查找磁盘高速缓存. 如果发现资源在缓存中,则该请求将不会发送到磁盘. 如果我们清理缓存,则磁盘缓存将无法工作,并且系统将在磁盘上寻找资源.

此外,清除缓存后,还会降低系统速度,并且系统会将每个请求的资源再次加载到磁盘缓存中.

3-810-jpg_6-1080-0-0-1080.jpg

现在,我们将创建一个Shell脚本,以通过cron调度任务每天下午2点自动清除RAM缓存. 创建如下的shell脚本clearcache.sh并在其中添加以下行:

#!/bin/bash

# 注意,我们这里使用了 "echo 3",但是不推荐使用在产品环境中,应该使用 "echo 1"

echo "echo 3 > /proc/sys/vm/drop_caches"

设置对clearcache.sh文件的执行权限

# chmod 755 clearcache.sh

现在,仅在需要清除内存缓存时才需要调用脚本.

现在,每天下午2点设置一个定时任务,以清除RAM缓存并打开crontab进行编辑.

# crontab -e

添加以下行,保存并退出.

0 3 * * * /path/to/clearcache.sh

MNJb6j.png

有关如何创建计划任务的更多详细信息,请查看我们的文章11计划任务示例.

在生产环境中自动清除服务器上的RAM是个好主意吗?

不!它不是. 想一想当您安排脚本每天凌晨2点清除内存缓存时的情况. 然后脚本将执行并刷新您的内存缓存. 出于某些原因,某天某天,您网站的用户向服务器请求的资源可能会超出预期.

这时,计划的脚本运行并清除了缓存中的所有内容. 当所有用户从磁盘读取数据时,这将导致服务器崩溃并损坏. 因此,仅在必要时并按您的期望清除缓存,否则您将是乏味的系统管理员.

如何清除Linux交换空间?

如果要清除空间,可以运行以下命令:

# swapoff -a && swapon -a

此外,了解风险之后,可以将以上命令添加到cron中.

现在,我们将以上两个命令组合为一个命令,并编写正确的脚本以同时清除RAM缓存和交换空间.

1-810-jpg_6-1080-0-0-1080.jpg

# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'

su -c 'echo 3 > /proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'

在测试上述命令之前,我们在执行脚本之前和之后运行“ free -m”以检查缓存.

ff4d7bc86ebb22cd84ffb36eeb1e12e1.gif

就是这样,如果您喜欢这篇文章,别忘了向我们提供您的宝贵意见,让我们知道,您认为清除企业和生产环境中的内存缓存和缓冲区是个好主意吗?

通过:

作者: Avishek Kumar译者: 挣扎的青少年校对: wxy

本文最初由LCTT翻译,Linux China很荣幸推出

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/shoujiruanjian/article-297497-1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值