域控制器上的“峰值”CPU使用率

Modified on: Sun, 21 Jul 2019 09:20:02 +0800

我们在小型150客户端域中有两个Windows Server 2008 SP2(可悲的不是2008 R2)域控制器,这些域控制器的CPU使用率非常“高峰”。域控制器都表现出相同的行为,并且托管在vSphere 5.5.0,1331820上。每两到三秒CPU使用率就会上升到80-100%然后快速下降,保持低电压一两秒然后再跳起来试。


查看虚拟机的历史性能数据表明此情况已持续至少一年,但频率自3月以来有所增加。



违规进程是SVChost.exe,它包含DHCP客户端(dhcpcsvc.dll),EventLog(wevtsvc.dll)和LMHOSTS(lmhsvc.dll)服务。我当然不是Windows内部专家,但在使用Process Explorer查看进程时我似乎找不到任何特别的错误,而不是看起来EventLog正在触发大量的RpcBindingUnbind来电。



在这一点上,我没有咖啡和想法。我该如何继续解决此问题?

作者:kce

最佳答案

TL; DR:EventLog文件已满。覆盖条目很昂贵和/或在Windows Server 2008中没有很好地实现。


@pk。@joeqwerty建议并在询问后,我认为似乎很可能是一个被遗忘的监控实施正在抓取事件日志。

我在一台上安装了Microsoft的网络监视器域控制器并使用ProtocolName == MSRPC过滤器开始过滤MSRPC。有很多流量,但它都在我们的远程站点的RODC之间,不幸的是没有使用与侦听EventLog进程相同的目标端口。该死!那就是理论。

为了简化操作并使运行监控软件更容易,我决定从SVCHost解包EventLog服务。以下命令和域控制器的重新引导将一个SVCHost进程专用于EventLog服务。这使调查变得更容易,因为您没有附加到该PID的多个服务。

SC config EventLog Type= own

然后我使用ProcMon并设置过滤器以排除一切都没有使用那个PID。我没有看到EventLog尝试打开丢失的注册表项的大量失败,表明可能的原因这里(显然糟糕的应用程序可以注册为事件来源以非常糟糕的方式)。可以预见,我看到了很多成功的安全事件日志的ReadFile条目(C:\ Windows \ System32 \ WinEvt \ Logs \ Security.evtx)。



以下是其中一个事件的Stack:

首先会注意到RPCBinding,然后是RPCBindingUnbind。这些中有一个很多。像每秒数千。安全日志非常繁忙,或者Security.evtx日志无法正常工作。

在EventViewer中,安全日志仅记录每分钟50-100个事件,这似乎适合此大小的域。该死!第二个理论是我们有一些应用程序,在一个被遗忘的角落里,左边还有一个非常详细的事件审计,但仍然尽职尽责地走开了。即使记录的事件发生率很低,仍然记录了很多(~250,000)个事件。可能是日志大小?

安全日志 - (右键单击) - 属性...并且最大日志大小设置为131,072 KB,日志大小当前保持为131,072 KB。选中“根据需要覆盖事件”单选按钮。我认为不断删除和写入日志文件可能很难,特别是当它已经满了所以我选择清除日志(我保存了旧日志以防万一我们需要它以便稍后进行审计)并让EventLog服务创建一个新的空文件。结果:CPU使用率恢复到5%左右的理智水平。

作者:Community,kce

相关问答

添加新评论