2010-02-10 7 views
5

Sto utilizzando EventLogReader per interrogare server 2008 remoti per eventi. Le prestazioni di interrogare gli eventi su una macchina remota sono orribili (6/sec). Se interrogo la stessa macchina tramite WMI utilizzando un ManagementObjectSearch forward-only, la prestazione è ottima (1000/sec). Non vedo alcuna opzione simile su EventLogReader (ad esempio ReturnImmediatly, Rewindable) per velocizzarlo. Ho provato a disattivare il firewall sul server remoto per vedere se c'erano possibili problemi di comunicazione, ma questo non ha fatto la differenza.EventLogReader Remote Performance

Quando si utilizza EventLogReader per leggere i registri dall'host locale, le prestazioni sono come previsto - è solo sulla rete che rallenta (ma WMI non presenta il problema).

Un modo per velocizzare le prestazioni di EventLogReader attraverso la rete?

Grazie, Mitch

+0

Esiste un motivo specifico per cui non è possibile utilizzare WMI? – Oded

+0

Ho bisogno di ottenere gli eventi in ordine crescente (EventLogReader lo consente). WMI restituisce solo in discesa. –

+0

che ne dici di usare WMI per caricarli in memoria, quindi ordinarli? –

risposta

4

fatto un po 'di test (modificato il codice di esempio da http://msdn.microsoft.com/en-us/library/bb671200.aspx) e dal mio sperimentando ho scoperto che il calo di prestazioni viene da chiamare EventRecord.FormatDescription().

Quando ho avuto solo una chiamata a EventRecord.ToXml() sono stato in grado di effettuare il pull remoto da un server sulla LAN oltre 4300 eventi in 25 secondi a circa 170 eventi/sec. Quando ho aggiunto una chiamata a EventRecord.FormatDescription(), le prestazioni sono scese a quasi 1,5 minuti per leggere tutti gli eventi 4300+ e circa 52 eventi/sec.

Mi scuso che questa potrebbe non essere la risposta che si desidera ma il mio consiglio sarebbe se non fosse necessario chiamare EventRecord.FormatDescription() aumenterà un po 'le prestazioni.

+0

@Nate: grazie per averlo esaminato. Sto chiamando FormatDescription che devo chiamare per ottenere il messaggio. Mi chiedo se c'è un altro modo per ottenere il messaggio interpolato? Dovrò scherzare con quello. –

+0

Ho trovato che EventRecord.ToXML() emette solo i messaggi del registro dell'applicazione, i registri di sicurezza sembrano essere ricavati dalle proprietà del registro eventi, ma FormatDescription() sembra farlo lentamente. Sto considerando di scrivere l'XPath completo per i dettagli del registro di sicurezza e di ritornare su FormatDescription se non ho dati XPath. – StrangeWill

+0

^Ignoralo, è stata un'idea stupida, non ho idea di come sostanzialmente compensare FormatDescription essendo stupidamente lento. – StrangeWill