2010-02-10 11 views
5

Używam EventLogReader do wysyłania zapytań do zdalnych serwerów 2008 dla zdarzeń. Wydajność sprawdzania zdarzeń na zdalnej maszynie jest okropna (6/s). Jeśli wysyłam zapytanie do tej samej maszyny przez WMI za pomocą funkcji zarządzania tylko do przodu, wydajność jest świetna (1000/s). Nie widzę żadnych podobnych opcji w EventLogReader (np. ReturnImmediatly, Rewindable), aby przyspieszyć. Próbowałem wyłączyć zaporę na serwerze zdalnym, aby sprawdzić, czy nie było problemów z komunikacją, ale to nie miało znaczenia.Zdalna wydajność EventLogReader

Podczas korzystania z EventLogReader do odczytywania dzienników z lokalnego hosta wydajność jest zgodna z oczekiwaniami - tylko w sieci jest spowalniana (ale WMI nie odczuwa problemu).

Jakikolwiek sposób przyspieszyć działanie EventLogReader przez sieć?

Dzięki Mitch

+0

Czy istnieje szczególny powód, dla którego nie można korzystać z usługi WMI? – Oded

+0

Potrzebuję uzyskać zdarzenia w porządku rosnącym (pozwala na to EventLogReader). WMI tylko oddaje go w dół. –

+0

Jak korzystać z usługi WMI, aby załadować je do pamięci, a następnie posortować? –

Odpowiedz

4

Czy trochę badań (zmodyfikowany kod przykładowy z http://msdn.microsoft.com/en-us/library/bb671200.aspx) iz mojego eksperymentowania I okazało się, że trafienie wydajność pochodzi z wywołaniem EventRecord.FormatDescription().

Kiedy miałem tylko połączenie z EventRecord.ToXml(), byłem w stanie zdalnie pobierać z serwera w sieci LAN ponad 4300 zdarzeń w 25 sekund przy około 170 zdarzeniach/sek. Kiedy dodałem wywołanie do EventRecord.FormatDescription(), wydajność spadła do prawie 1,5 minuty, aby odczytać wszystkie 4300 zdarzeń i około 52 zdarzeń/sekundę.

Przepraszam, może to nie jest odpowiedź, której potrzebujesz, ale moja rada byłaby, gdybyś nie musiał wywoływać funkcji EventRecord.FormatDescription(), to znacznie zwiększy wydajność.

+0

@Nate: dziękuję za patrzenie w to. Dzwonię do FormatDescription, który muszę wywołać, aby pobrać wiadomość. Zastanawiam się, czy istnieje inny sposób na uzyskanie interpolowanej wiadomości? Będę musiał się z tym pogodzić. –

+0

Odkryłem, że tylko EventRecord.ToXML() wyświetla komunikaty dziennika aplikacji, dzienniki zabezpieczeń wydają się być zbudowane z właściwości dziennika zdarzeń, ale FormatDescription() wydaje się robić to boleśnie wolno. Rozważam napisanie pełnej XPath dla szczegółów dziennika bezpieczeństwa i cofnięcie się do FormatDescription, jeśli nie mam danych XPath. – StrangeWill

+0

^Zignoruj ​​to, to był głupi pomysł, nie mam pojęcia, jak w zasadzie zrekompensować, że formatDescription jest głupio powolny. – StrangeWill