偶尔在我的一台Web服务器上运行svchost.exe运行大约60-80%的DNS客户端服务。 这是在Windows 2008 Web服务器计算机上(一路打补丁),每天处理大约10M页面浏览量,每月大约有500万独立用户。
我有时会看到它运行在我的服务器场中的两台服务器中的一台服务器上,同时处理与其他机器相同的stream量,所以我认为它可能会被禁用…请记住,受其影响的服务器运行接近90%的CPU,而其他的15%。
现在我知道它caching的名称parsing数据,但它需要这样做的代价? 我做了一些研究,并有分裂的build议,所以在这里,我问你们:)谢谢!
以下是CPU利用率的截图:

禁用DNS客户端服务将不会禁用DNS查找。 堆栈将仍然知道如何做一个DNS查找。 不相信吗? 尝试一下。
现在,您的Web服务器上的dns查询率高的一个可能的原因可能是与http请求logging有关的dns查询。 通过dns名称禁用客户端请求源的日志logging。
我不build议这样做,但是服务器在重启之后会出现同样的问题,还是只是慢慢地退化呢?
同上彼得·伊万关于大型主机文件导致DnsCache服务吃掉CPU的说明。
似乎是我现在的库存答案,但对使用Process Monitor发生的事情有一个鼻子。
我也考虑将DnsCache移到它自己的SVCHOST实例(用于testing/隔离):
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
禁用DNS客户端服务将使服务器完全无法parsing任何DNS查询。 恕我直言,这不是一个好主意。 对于初学者来说,这意味着至less服务器将无法执行任何Windows更新。 而且,几乎所有涉及任何networking的计算机都需要DNS查询才能正常工作。
而且,如果您的Web应用程序正在与其他服务或网站进行通信,则它将停止运行。
我的猜测是,DNS客户端服务活动是由于IIS日志logging; 尝试暂时closures,看看是否解决这个问题。 如果是这样的话,那么你知道你真正的问题在哪里。
DNS客户端服务主要用作DNScaching,因为它的服务名称为“DNScaching”。 closures它可以减慢DNS名称parsing速度。
常见的浏览体验不应该受到伤害。 但是,您的Web服务器上可能会有一些依赖于DNS名称parsing的进程。 然后,他们的响应时间可能会提高,只是因为你的DNS权威重复的DNS查询。
根据我的经验,由DNS客户端服务引起的高CPU利用率可能是由大的hosts文件造成的。 添加网卡或更改其设置可能会导致DNScaching刷新,然后CPU使用率boost。