像任何其他操作系统一样,GNU / Linux已经有效地实现了内存管理,甚至更多。 但是如果任何进程正在吃掉你的内存并且想要清除它,Linux提供了一种清除或清除ram缓存的方法。
如何清除缓存在Linux?
每个Linux系统有三个选项来清除缓存,而不中断任何进程或服务。
1.只清除页缓存。
# sync; echo 1 > /proc/sys/vm/drop_caches
2.清除目录项和inode。
# sync; echo 2 > /proc/sys/vm/drop_caches
3.清除页缓存,目录项和inode。
# sync; echo 3 > /proc/sys/vm/drop_caches
上述命令的说明。
同步将刷新文件系统缓冲区。 命令通过分隔“;”
顺序运行。 shell在执行序列中的下一个命令之前等待每个命令终止。 由于内核文档中提到,写信给drop_cache将清理缓存,而不杀死任何应用程序/服务, echo命令是做写入文件的工作。
如果您必须清除磁盘高速缓存,第一个命令是企业和生产安全作为“...echo 1 > ….”
将只能清除页缓存 。 不建议使用上面第三个选项“...echo 3 >”
直到你知道你在做什么的生产,因为它会清除页缓存 , 目录项和inode。
在Linux中释放可能被Linux Kernel使用的Buffer和Cache是个好主意吗?
当您应用各种设置并希望检查时,如果它实际上是专门在I / O扩展基准上实现的,那么您可能需要清除缓冲区缓存。 您可以如上所述删除缓存,而无需重新启动系统,即无需停机时间。
Linux是以这样的方式设计的,它在查看磁盘之前查看磁盘缓存。 如果它在缓存中找到资源,则请求不到达磁盘。 如果我们清理缓存,磁盘缓存将不太有用,因为操作系统将在磁盘上查找资源。
此外,它还将缓慢系统几秒钟,同时清理缓存,并且操作系统所需的每个资源都在磁盘缓存中再次加载。
现在,我们每天都会在凌晨2点通过一个cron任务调度程序创建一个shell脚本来自动清除RAM缓存。 创建一个shell脚本clearcache.sh并添加以下行。
#!/bin/bash # Note, we are using "echo 3", but it is not recommended in production instead use "echo 1" echo "echo 3 > /proc/sys/vm/drop_caches"
在clearcache.sh文件中设置执行权限。
# chmod 755 clearcache.sh
现在,您可以在需要清除RAM缓存时调用脚本。
现在设置一个cron每天凌晨2点清除RAM缓存。 打开进行编辑的crontab。
# crontab -e
追加以下行,保存并退出在每天凌晨2点运行。
0 2 * * * /path/to/clearcache.sh
有关如何与cron你可能要检查我们的文章的作业的更多详细信息11克龙计划作业 。
在生产服务器上自动清除RAM缓存是个好主意吗?
没有! 不是这样。 想一个情况,当你已安排脚本在凌晨2点清除RAM缓存日常生活。 每天凌晨2点执行脚本并刷新RAM缓存。 有一天,无论什么原因,可能会超过预期的用户在您的网站上,并从您的服务器寻求资源。
同时,预定脚本运行并清除缓存中的所有内容。 现在所有的用户都从磁盘获取数据。 这将导致服务器崩溃和数据库损坏。 所以清楚ram-cache只有在需要的时候,并知道你的脚步,否则你是一个货物系统管理员。
如何清除交换空间在Linux?
如果要清除Swap空间,可以运行以下命令。
# swapoff -a && swapon -a
也可以在上面的cron脚本中添加上面的命令,了解所有相关的风险。
现在,我们将把上面的命令组合成一个单一的命令,使一个合适的脚本清除RAM缓存和交换空间。
# echo 3 > /proc/sys/vm/drop_caches && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared' OR $ su -c "echo 3 >'/proc/sys/vm/drop_caches' && swapoff -a && swapon -a && printf '\n%s\n' 'Ram-cache and Swap Cleared'" root
同时测试以上的命令后,我们会和之前运行该脚本后运行命令“ 自由-h”,将检查缓存。
这就是现在,如果你喜欢的文章,不要忘了提供我们在评论中的宝贵反馈,让我们知道,你认为清除ram缓存和缓冲区在生产和企业是一个好主意?