5

我正在使用 EventLogReader 来查询远程 2008 服务器的事件。在远程机器上查询事件的性能非常糟糕(6/秒)。如果我使用只进的 ManagementObjectSearch 通过 WMI 查询同一台机器,性能会非常好(1000/秒)。我没有在 EventLogReader 上看到任何类似的选项(例如 ReturnImmediately、Rewindable)来加速它。我尝试关闭远程服务器上的防火墙以查看是否可能存在通信问题,但这并没有什么不同。

当使用 EventLogReader 从本地主机读取日志时,性能符合预期——它只是在网络上变慢(但 WMI 没有遇到问题)。

有什么方法可以通过网络加快 EventLogReader 的性能?

谢谢,米奇

4

1 回答 1

4

做了一些测试(修改了来自http://msdn.microsoft.com/en-us/library/bb671200.aspx的示例代码),从我的实验中我发现性能损失来自于调用 EventRecord.FormatDescription()。

当我只调用 EventRecord.ToXml() 时,我能够在 25 秒内以大约 170 个事件/秒的速度从 LAN 上的服务器远程提取超过 4300 个事件。当我添加对 EventRecord.FormatDescription() 的调用时,读取所有 4300 多个事件和大约 52 个事件/秒的性能下降到几乎 1.5 分钟。

很抱歉,这可能不是您想要的答案,但我的建议是,如果您不需要调用 EventRecord.FormatDescription() 它将大大提高性能。

于 2010-02-12T19:41:14.757 回答