当前位置: 首页 > 科技观察

HowtoClearRAMMemoryCache,Cache,andSwapSpaceonLinux

时间:2023-03-17 11:48:41 科技观察

与任何其他操作系统一样,GNU/Linux有效地实现了内存管理甚至更多。但是,如果任何进程正在占用您的内存并且您想清除它,Linux提供了一种刷新或清除RAM缓存的方法。如何在Linux中清除缓存?每个Linux系统都有三个选项可以在不中断任何进程或服务的情况下清除缓存。1、只清除缓存页面同步;echo1>/proc/sys/vm/drop_cachessync;echo1>/proc/sys/vm/drop_caches2,清除目录项和inodessync;echo2>/proc/sys/vm/drop_caches3,clear,cachePages,directoryentriesandinodesync;echo3>/proc/sys/vm/drop_caches上面命令的解释:sync会刷新文件系统缓存,命令之间用分隔“;”,顺序执行,shell等待顺序中的每条命令执行完毕前终止。如内核文档中所述,写入drop_cache将清空缓存而不会杀死任何应用程序/服务,而echo命令会完成写入文件的工作。如果必须清除磁盘缓存,第一个命令在企业和生产环境中是最安全的,“...echo1>...”只会清除页面缓存。除非您确切知道自己在做什么,否则不建议在生产中使用“...echo3>”上方的第三个选项,因为它会清除缓存的页面、目录条目和索引节点。在Linux上使用内核释放Buffer和Cache是个好主意吗?当你请求很多你想检查的设置时,如果它实际上是在专门做一个I/O范围的基准测试,那么你可能想要清除缓存。您可以如上所示删除缓存而无需重新启动系统而无需停机。Linux的设计方式是先查看磁盘缓存,然后再查看磁盘。如果它在缓存中找到资源,则请求不会到达磁盘。如果我们清除缓存,磁盘缓存就没有用了,系统会去磁盘上寻找资源。此外,清除缓存时也会降低系统速度,系统会重新加载每个请求的资源到磁盘缓存中。现在,我们将通过cron任务调度程序创建一个shell脚本,以在每天下午2点自动清除RAM缓存。创建一个shell脚本clearcache.sh并在其中添加以下行:#!/bin/bash#Note,weareusing"echo3",butitisnotrecommendedinproductioninsteaduse"echo1"echo"echo3>/proc/sys/vm/drop_caches"toclearcache。sh文件将执行权限设置为#chmod755clearcache.sh现在您只需要在需要清除RAM缓存时调用该脚本。现在设置一个cron作业,每天下午2点清除RAM缓存,打开crontab进行编辑。#crontab-e添加以下行,保存并退出。03***/path/to/clearcache.sh有关如何创建cron作业的更多详细信息,您可以查看我们的文章11CronSchedulingJobs。自动清除生产服务器上的RAM是个好主意吗?不!它不是。考虑这样一种情况,您已安排一个脚本在每天下午2点清除RAM缓存。每天下午2点,此脚本将执行并刷新您的RAM缓存。在一天中的任何时候,您的网站用户可能比预期更在线,并向您的服务器请求资源。同时,调度程序运行脚本并清除缓存中的所有内容。当所有用户都从磁盘读取时,这会使服务器崩溃并损坏数据库。因此,仅在必要时和您期望的时候清除缓存,否则您就是CargoCult系统管理员。如何清除Linux中的交换空间?如果要清除交换空间,可以运行以下命令:#swapoff-a&&swapon-a另外,了解风险后,可以将上述命令添加到cron。现在,我们将以上两个命令合并为一个命令来编写正确的脚本来同时清除RAM缓存和交换空间。#echo3>/proc/sys/vm/drop_caches&&swapoff-a&&swapon-a&&printf'\n%s\n''Ram-cacheandSwapCleared'或su-c'echo3>/proc/sys/vm/drop_caches'&&swapoff-a&&swapon-a&&printf'\n%s\n''Ram-cacheandSwapCleared'在测试上述命令之前,我们运行“free-m”并执行脚本来检查缓存。到此为止,如果喜欢这篇文章,别忘了点击观看转发,分享支持哦。