2010-02-10 7 views
5

Estoy usando EventLogReader para consultar eventos de servidores remotos de 2008. La realización de consultar los eventos en una máquina remota es horrible (6/seg). Si realizo una consulta en la misma máquina a través de WMI utilizando ManagementObject forward-only Search, el rendimiento es excelente (1000/seg). No veo ninguna opción similar en EventLogReader (por ejemplo, ReturnImmediatly, Rewindable) para acelerarla. Traté de apagar el firewall en el servidor remoto para ver si había posibles problemas de comunicación, pero eso no hizo la diferencia.EventLogReader Remote Performance

Al usar EventLogReader para leer registros del host local, el rendimiento es el esperado, solo se ralentiza la red (pero WMI no experimenta el problema).

¿Alguna forma de acelerar el rendimiento de EventLogReader en la red?

Gracias, Mitch

+0

¿Existe algún motivo específico por el que no pueda usar WMI? – Oded

+0

Necesito obtener los eventos en orden ascendente (EventLogReader lo permite). WMI solo lo devuelve al descender. –

+0

¿qué hay de usar WMI para cargarlos en la memoria, y luego ordenarlos? –

Respuesta

4

hizo una pequeña prueba (modificado el código de ejemplo de http://msdn.microsoft.com/en-us/library/bb671200.aspx) y de mi experimentación que encontraron que el impacto en el rendimiento proviene de llamar EventRecord.FormatDescription().

Cuando solo tenía una llamada a EventRecord.ToXml() pude extraer de forma remota desde un servidor en la LAN más de 4300 eventos en 25 segundos a unos 170 eventos/seg. Cuando agregué una llamada a EventRecord.FormatDescription() el rendimiento se redujo a casi 1,5 minutos para leer los más de 4300 eventos y aproximadamente 52 eventos/seg.

Disculpe que esta puede no ser la respuesta que desea pero mi consejo sería que si no necesita llamar a EventRecord.FormatDescription() aumentará bastante el rendimiento.

+0

@Nate: gracias por investigar eso. Llamo a FormatDescription, que debo llamar para recibir el Mensaje. Me pregunto si hay otra forma de obtener el mensaje interpolado. Tendré que perder el tiempo con eso. –

+0

He encontrado que EventRecord.ToXML() solo emite mensajes de registro de aplicación, los registros de seguridad parecen construirse fuera de las propiedades del registro de eventos, pero FormatDescription() parece estar haciéndolo muy lento. Estoy considerando escribir el XPath completo para los detalles del registro de seguridad y recurrir a FormatDescription si no tengo datos XPath. – StrangeWill

+0

^Ignora eso, fue una idea estúpida, no tengo idea de cómo básicamente compensar que FormatDescription sea estúpidamente lento. – StrangeWill