2009-04-15 18 views
5

Estoy construyendo una solución basada en el cliente-servidor; el cliente es una aplicación de escritorio y el servidor es una aplicación web.Monitoreo (red) de la utilización de recursos y el rendimiento de una aplicación de Windows

Básicamente, necesito monitorear el rendimiento y la utilización de recursos del cliente, que es una aplicación de escritorio de Windows basada en .NET 2.0.

El Lo más importante que necesito para monitorear es los recursos de red del cliente utiliza, es decir, ¿cuál es el tamaño de los datos que fluyen hacia fuera desde el cliente al servidor y cuál es el tamaño de los datos que el cliente descargas desde el servidor.

Aparte de esto, la supervisión general del rendimiento ayudaría también.

Por favor guía.

Editar: Algunas personas han sugerido usar perfmon, pero no son los valores que se muestran en perfmon en todo el sistema? Necesito estas estadísticas basadas en red para una sola aplicación ... bytes enviados y recibidos por una sola aplicación de escritorio.

Respuesta

2

necesita dividir su monitoreo en dos partes:

  • Cómo el sistema interactúa con el servidor (número de llamadas realizadas)
  • cantidad de tráfico de red (tamaño de los datos intercambiados para cualquier llamada)

La primera parte es (en mi experiencia) a menudo descuidada, aunque tiene mucha importancia, porque adquirir una nueva conexión a menudo es mucho más caro que el tráfico de datos en sí mismo.

Usted no nos dice nada sobre el rey de conexión que está utilizando (llamadas tcpip bajo nivel, servicios web, WCF o qué otra cosa) pero mi sugerencia es:

  • encontrar una manera de determinar cómo muchas veces la aplicación llama al servidor
  • Encuentre la cantidad de cualquier llamada individual está costando en términos de datos intercambiados

Cómo supervisar estos valores depende mucho de la tecnología involucrada, para algunos es muy simple (si, por ejemplo, estás usando un servicio web, configúralo de Fiddler para monitorear las llamadas y examinar los resultados de monitoreo es muy simple), para otras necesitas trabajar usando un analizador de tráfico de bajo nivel como Wireshark o MS Network Monitor y aprender a filtrar el tráfico según la dirección IP del servidor, los puertos usados ​​y otros parámetros

Si aclaras la arquitectura de tu aplicación, puedo intentar ser más específico.

Saludos Massimo

0

Quiere ver perfmon (también llamado Monitor de rendimiento en herramientas de administración fuera del menú de inicio).

Ábralo en su vista gráfica predeterminada, agregue un contador, seleccione la interfaz de red, luego los bytes por segundo (o un contador similar), haga clic en Aceptar y listo.

Puede experimentar con los otros contadores de red ya que hay muchos, uno de ellos hará exactamente lo que quiera. También puede guardar los registros perfmon en un archivo y verlos después: verá el gráfico en su totalidad y podrá "acercarlo" a las secciones. Alternativamente, puede guardar archivos de estilo de registro con solo números brutos.

Aquí hay un quick guide a través perfmon como una herramienta de administración, una vez que entiendes eso, el resto viene fácilmente.

En Vista no puede agregar contadores individuales más, agrega todo el conjunto de contadores agrupados en un objeto, por lo que para mi ejemplo, agregaría el objeto Interfaz de red, luego vería todo el individuo contadores en el gráfico después de hacer clic en Aceptar.

+0

no son los valores que se muestran en perfmon en todo el sistema? necesito estas estadísticas basadas en red para una sola aplicación ... bytes enviados y recibidos por una sola aplicación de escritorio. – Sameet

+0

ah sí ... bueno, puede usar el objeto de proceso y la instancia de la aplicación para ver todos los números de IO (por ejemplo, bytes de datos de E/S); desafortunadamente eso también incluye disco IO también. – gbjbaanb

2

También puede usar el Administrador de tareas para hacer esto. Vaya a la pestaña de procesos, luego Ver -> "seleccionar columnas". Verifique "Bytes de lectura de E/S" y "Bytes de escritura de E/S". Luego encuentra tu programa en la lista de procesos y puedes observar los valores acumulados.

+0

según msdn que es más que solo red, ¿no? El número de bytes leídos en las operaciones de entrada/salida generadas por un proceso, incluido el archivo, la red y las E/S del dispositivo. – duckworth

0

Si desea que esta integrado en el código base de clientes, y no usar una herramienta externa, puede utilizar Performance Counters para obtener acceso a ésta y muchas otras cosas reportados por el Monitor de rendimiento, el Administrador de tareas, etc.

3

La herramienta estándar para la supervisión de la red es Wireshark. Le permite filtrar el tráfico de red de manera muy flexible. Sin embargo, esto podría ser bastante exagerado para su aplicación. Si está utilizando .NET puro, le sugiero que agregue registro de rendimiento en sus clases de red en el lado del servidor, si está utilizando clases de biblioteca .Net, luego herede de ellas sus propias clases que agregan estadísticas al enviar y recibir datos .

2

Probé el perfmon y tampoco pude ver nuestro tráfico de red. Pero pude hacerlo en Performance Explorer en la suite del equipo Visual Studio 2005.

Si tiene Team edition Visual Studio, puede configurar Muestreo/Instrumentación en su aplicación de escritorio. Luego ve a opciones de la sesión. seleccione Eventos -> Rastreo del kernel de Windows -> Red. Ejecute su aplicación y permita que Visual Studio registre los datos. Luego guarda el reporte. (Me encanta Microsoft por esta "característica") vaya al símbolo del sistema, vaya a C: \ Archivos de programa \ Microsoft Visual Studio 8 \ Team Tools \ Performance Tools y ejecute "vsperfreport/CALLTRACE (filename) .vsp" Esto producirá un Archivo csv que contiene todos los paquetes de red enviados/recibidos/tamaño/puerto, etc. por la aplicación de escritorio.

Sé que esta fue una solución larga pero probé en mi aplicación .Net 2.0 y capturó toda nuestra comunicación con Oracle Identity Manager y Oracle Database.

1

No está claro por su puesto si está utilizando peticiones HTTP. Usted indicó que el servidor es una aplicación web, lo que implica (quizás incorrectamente) para mí que podría estar utilizando el protocolo HTTP para enviar/recibir datos de un servidor a otro.

Si es así, una herramienta que podría ser útil es Fiddler.Esta herramienta supervisará todo el tráfico HTTP dentro y fuera de su estación de trabajo y puede (creo) ver sesiones y aplicaciones específicas. Lo bueno es que puede ver las solicitudes individuales y ver las estadísticas de estas solicitudes, incluidos los bytes de entrada/salida, los tiempos de ida y vuelta y otros datos útiles.

Si no está basado en HTTP, entonces esta herramienta no ayudará.

1

Me sorprende que nadie haya sugerido SysInternals (ahora Microsoft) Process Explorer (technet.microsoft.com/en-us/sysinternals/bb896653.aspx). Si hace clic con el botón derecho en el ejecutable en cuestión y hace clic en Propiedades, se abrirá un cuadro de diálogo. Luego, cambia a la pestaña de rendimiento y puede supervisar las E/S del ejecutable. La pestaña Gráfico de rendimiento mostrará el uso de CPU y el historial de bytes de E/S graficados a lo largo del tiempo. Es una herramienta genial y gratuita.

0

Debe consultar ACE Analyst para este caso de uso; considérelo como una capa superinteligente además de las capturas de paquetes Wireshark. Debe mirar los paquetes para comprender la verdadera naturaleza del comportamiento de la aplicación que se ejecuta en la red.

Cuestiones relacionadas