由于 CPU 使用率高,可以禁用 Windows 2008 Web 服务器上的 DNS 客户端服务吗?

由于 CPU 使用率高,可以禁用 Windows 2008 Web 服务器上的 DNS 客户端服务吗?

偶尔我的某个 Web 服务器svchost.exe有 60-80% 的负载在运行 DNS 客户端服务。这是一台 Windows 2008 Web 服务器(已打上所有补丁),每天处理大约 1000 万次页面浏览量,每月处理大约 500 万次独立用户。

我有时会看到它在我的服务器场中的两台服务器之一上运行,同时处理与其他机器相同数量的流量,所以我认为禁用它可能是可以的...请记住,受它影响的服务器的 CPU 使用率接近 90%,而其他服务器的 CPU 使用率仅为 15%。

现在我知道它缓存了名称解析数据,但它需要付出这样的代价吗?我做了一些研究,发现对此有分歧的建议,所以我在这里问你们 :) 谢谢!

以下是 CPU 使用率的屏幕截图:

在此处输入图片描述

答案1

禁用 DNS 客户端服务将不是禁用 DNS 查找。堆栈仍然知道如何进行 DNS 查找。不相信吗?试试看。

现在,Web 服务器上 DNS 查询率过高的一个可能原因可能是与记录 http 请求相关的 DNS 查找。禁用按 DNS 名称记录客户端请求源。

答案2

我不想提出这个建议,但是服务器重启后是否会出现同样的问题,还是只是随着时间的推移慢慢退化?

同样,Peter Ivan 也提到,大型 hosts 文件会导致DNS缓存服务会消耗 CPU。

这似乎是我最近的标准答案,但可以使用进程监视器来了解正在发生的事情。

我还考虑将 DnsCache 移至其自己的 SVCHOST 实例(用于测试/隔离):

tasklist /fi "imagename eq svchost.exe" /svc
sc config dnscache Type= own
sc stop dnscache
sc start dnscache
tasklist /fi "imagename eq svchost.exe" /svc

答案3

禁用 DNS 客户端服务将使服务器完全无法解析任何 DNS 查询。在我看来,这不是一个好主意。首先,这意味着服务器至少无法进行任何 Windows 更新。而且,几乎所有涉及任何类型的网络的计算机操作都需要 DNS 查询才能正常运行。

此外,如果您的 Web 应用程序正在与其他服务或网站通信,那么它将停止运行。

我猜想 DNS 客户端服务活动是由于 IIS 日志记录引起的;尝试暂时关闭它,看看是否能解决问题。如果是这样,那么您就知道真正的问题出在哪里了。

答案4

DNS 客户端服务正如其服务名称“DNS Cache”所示,它主要用作 DNS 缓存。关闭它会减慢 DNS 名称解析速度。
一般的浏览体验不会受到影响。但您的 Web 服务器上可能有一些进程依赖于 DNS 名称解析。那么它们的响应时间可能会因向您的 DNS 授权机构重复进行 DNS 查询而增加。

根据我的经验,DNS 客户端服务的高 CPU 利用率可能是由大hosts文件引起的。添加 NIC 或更改其设置可能会导致 DNS 缓存刷新,然后其 CPU 使用率上升。

相关内容