我需要您关于在我的 Gnu/Linux debian 服务器上使用此脚本的建议。
该服务器用于托管使用 magento 平台的网站。我注意到,每隔 2-3 天检查一次内存,就会显示 64 GB 的总内存中有 5 到 7 GB 的可用内存。
我偶然发现了这个网站:如何在 Linux 上清除 RAM 内存缓存、缓冲区和交换空间。
其中脚本如下:
#!/bin/bash
# Note, we are using "echo 3", but it is not recommended in production
# instead use "echo 1"
echo 3 > /proc/sys/vm/drop_caches
- 问题是,这样做安全吗?
- 如果我将其放入每天运行的 crontab 中,会发生一些损坏吗?
他们声明如下:
在 Linux 中释放可能被 Linux 内核使用的缓冲区和缓存是一个好主意吗?当您应用各种设置并想要检查它是否实际上是专门在 I/O 扩展基准上实现的,那么您可能需要清除缓冲区缓存。您可以按照上面的说明删除缓存,而无需重新启动系统,即无需停机。
Linux 的设计方式是在查看磁盘之前先查看磁盘缓存。如果它在缓存中找到资源,则请求不会到达磁盘。如果我们清理缓存,磁盘缓存将不再那么有用,因为操作系统将在磁盘上查找资源。
此外,在清理缓存并将操作系统所需的所有资源重新加载到磁盘缓存中时,它还会使系统速度减慢几秒钟。
我注意到在其他一些网站上加载内存的命令如下所示:
#!/bin/bash
sync; echo 3 > /proc/sys/vm/drop_caches
在回声之前“同步”哪个更好?
答案1
我的建议是不!
除非您对内存有非常特殊的需求现在,最好让记忆保存可能有用的东西。如果 Linux 内核确实需要的话,它将能够在不到一微秒的时间内回收内存。相比之下,从传统硬盘获取数据需要数万微秒(7200rpm硬盘平均需要4.2毫秒磁盘旋转到正确位置,高端磁盘上的寻道时间也是4毫秒)如果事实证明您确实需要它。与 RAM 相比,即使是 SSD 的性能也会下降
内存中没有有用信息并不会节省任何电量。
删除缓存的原因主要是为了基准测试,尤其是基准测试文件系统。人们可以想象一种休眠工具也希望减少必须写入的主内存量。
答案2
是的,它会降低性能。但只要不引入但是,其他任何东西都不应该被破坏。
但为什么要这么做呢。没有任何好处。内核正在尝试为未使用的内存找到用途。