1

我有一个 Thecus N8900 NAS,它是一个基于 Linux 的文件服务器,通过 NFS 向六个客户端提供文件。由于 Thecus 支持尚未解释的某些原因,它运行一个脚本,每 60 秒检查一次 /proc/meminfo,如果磁盘缓存超过可用 RAM 的 50%,它们会执行“echo 3 > /proc/sys/vm/drop_caches " 命令刷新缓存。

撇开这是否有意义的问题不谈,实际的“echo 3 > /proc/sys/vm/drop_caches”命令可能需要几个小时才能完成,这对我来说似乎太长了。

最大的问题是,当这种情况发生时,机器上的负载会激增,磁盘利用率也会激增,这使得所有 NFS 流量都在爬行,直到命令最终完成,此时一切都会再次响应。

NAS 本身有 16 gigs 的 RAM,raid6 配置中的 7 个驱动器(加上一个热备件),根本没有驱动器问题(根据 SMART 测试)。

所以问题是:什么会导致 drop_caches 命令花费这么长时间?

4

1 回答 1

1

命令本身应该立即完成。结果,即所有内容都需要再次缓存,可能会花费大量时间。这没有任何意义:如果您可以完全删除它,那将是一个好主意。(这也是 StackOverflow 中的主题)

编辑:它是否也执行syncbefore echo 3 > /proc/sys/vm/drop_caches,例如 in sync; echo 3 > /proc/sys/vm/drop_caches?因为sync将所有写入刷新到磁盘的操作可能需要一些时间才能完成。此外,虽然也sync有性能问题,但它可能有一些意义,如果突然断电,数据已经写入磁盘,所以你会很安全。

于 2014-08-06T15:54:40.137 回答