这可能也适用于任何其他与 BIND 类似的应用程序。目前,我的家庭服务器的 Linux 安装位于 USB 闪存驱动器上(出于好玩),与 SATA 驱动器相比,速度相当慢。
BIND 通过转发器查找查询时具体是如何工作的?结果是否缓存在硬盘上(或者在我的情况下是 USB 闪存驱动器上)?这会导致查询速度变慢吗?
我注意到,直接使用转发器时,查询速度有时会明显加快。我有一个 SATA 硬盘(用于存储),所以如果本地驱动器参与其中,也许我可以使用此驱动器来提高速度。
另一方面,我可能想象闪存驱动器会使查询速度变慢 - 我不完全确定如何证明/反驳这一点;如果有人知道实用的方法,请告知。
答案1
一般来说,如果您想知道某个进程/用户/文件正在做什么,而又不必全天候运行 lsof,您可以使用 auditctl。
假设您有一个较新的内核审计控制,这应该是一个简单的操作。(这是在 debianfu 中,如果您运行的是 redhat,则翻译为适当的)
# apt-get install auditd
确保其正在运行(/etc/init.d/auditd status)。
auditctl -a entry,always -F arch=b64 -S open -F pid=<process id>
如果你运行的是 32 位架构,请将 b64 替换为 b32,open 可以用任何系统调用或单词“all”替换
更多信息请阅读 auditctl 手册页。
答案2
通读此链接在这里有这样一段话:“清除缓存实际上是关闭名称服务器的副作用,因为 BIND 名称服务器只将缓存数据存储在内存中。”这意味着您的缓存正在从内存中消失。
机器有多少内存?机器上还有其他负载吗(比如 top 显示高负载值或某些东西占用了处理器?)