我有一个 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 命令花费这么长时间?