2010-02-10 46 views
5

我正在使用EventLogReader來查詢遠程2008服務器的事件。在遠程機器上查詢事件的性能非常糟糕(6 /秒)。如果我使用只向前管理對象查詢通過WMI查詢同一臺計算機,則性能很好(1000 /秒)。我沒有在EventLogReader上看到任何類似的選項(例如ReturnImmediatly,Rewindable)來加速它。我嘗試關閉遠程服務器上的防火牆以查看是否有可能出現通信問題,但這並沒有什麼區別。EventLogReader遠程性能

當使用EventLogReader從本地主機讀取日誌時,性能與預期的一樣 - 只是通過網絡減慢速度(但WMI不會遇到問題)。

通過網絡加速EventLogReader性能的任何方法?

感謝, 米奇

+0

是否有您無法使用WMI的特定原因? – Oded 2010-02-10 18:41:43

+0

我需要按升序獲取事件(EventLogReader允許)。 WMI只會按降序返回。 – 2010-02-10 18:53:46

+0

如何使用WMI將它們加載到內存中,然後對它們進行排序? – 2010-02-10 18:55:43

回答

4

做了一個小測試(從http://msdn.microsoft.com/en-us/library/bb671200.aspx修改示例代碼),並從我的實驗,我發現,對性能的影響來自於呼叫EventRecord.FormatDescription()。

當我只有對EventRecord.ToXml()的調用時,我能夠以大約170個事件/秒的速度在25秒內通過4300個事件從局域網上的服務器進行遠程調用。當我添加對EventRecord.FormatDescription()的調用時,性能下降到將近1.5分鐘,以讀取所有4300+個事件和大約52個事件/秒。

我很抱歉,這可能不是你想要的答案,但我的建議是,如果你不需要調用EventRecord.FormatDescription(),它會提高性能相當多。

+0

@Nate:謝謝你的調查。我正在調用FormatDescription,我需要調用以獲取消息。我想知道是否有另一種方式來獲取插入消息?我將不得不攪亂。 – 2010-02-12 22:50:50

+0

我發現EventRecord.ToXML()只輸出應用程序日誌消息,安全日誌似乎是建立在事件日誌屬性之外的,但是FormatDescription()看起來很痛苦地慢。我正在考慮爲安全日誌詳細信息編寫完整的XPath,如果我沒有XPath數據,請回到FormatDescription上。 – StrangeWill 2011-08-03 19:39:45

+0

^忽略,這是一個愚蠢的想法,我不知道如何基本上彌補FormatDescription是愚蠢緩慢。 – StrangeWill 2011-08-03 20:41:17