servidores servidor rendimiento ransomware que proteger procesos procesador monitoreo monitorear memoria discos como c# .net performance networking resources

c# - servidor - rendimiento de windows server



Utilización de recursos de monitorización(red) y rendimiento de una aplicación de Windows (10)

Debería consultar ACE Analyst para este caso de uso, piense en ello como una capa superinteligente además de las capturas de paquetes de Wireshark. Debe mirar los paquetes para comprender la verdadera naturaleza del comportamiento de la aplicación que se ejecuta en la red.

Estoy construyendo una solución basada en cliente-servidor; el cliente es una aplicación de escritorio y el servidor es una aplicación web.

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.

Lo más importante que debo controlar son los recursos de red que usa el cliente , es decir, cuál es el tamaño de los datos que fluyen del cliente al servidor y cuál es el tamaño de los datos que el cliente descarga del servidor.

Aparte de esto, el monitoreo general del desempeño 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.


Desea ver el perfmon (también llamado Monitor de rendimiento en las herramientas de administración 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 una guía rápida a través de perfmon como una herramienta de administración, una vez que comprenda eso, el resto vendrá fácilmente.

En Vista ya no puedes agregar contadores individuales, agregas todo el conjunto de contadores agrupados debajo de un objeto, por lo que para mi ejemplo, agregarías el objeto Interfaz de red, luego verías todos los contadores individuales en el gráfico después de hacer clic en Aceptar.



La herramienta estándar para el monitoreo de 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 redes 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.


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.


Necesita dividir su monitoreo en dos partes:

  • Cómo interactúa el sistema 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.

No nos diga nada sobre el rey de la conexión que está utilizando (llamadas de tcpip de bajo nivel, servicios web, WCF o cualquier otra cosa) pero mi sugerencia es:

  • Encuentre una forma de determinar cuántas veces su aplicación llama al servidor
  • Encuentre cuánto cuesta una sola llamada en términos de datos intercambiados

Cómo monitorear estos valores depende en gran medida de la tecnología involucrada, para algunos es muy simple (si, por ejemplo, está usando un servicio web, configurar Fiddler para monitorear las llamadas y examinar los resultados de un monitoreo es muy simple), para otro, debe trabajar utilizando un analizador de tráfico de bajo nivel como Wireshark o MS Network Monitor y aprender a filtrar el tráfico de acuerdo con la dirección IP del servidor, los puertos utilizados y otros parámetros.

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

Saludos Massimo


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.


Si desea que esto esté integrado en la base de código de su cliente y no use una herramienta externa, puede usar Contadores de rendimiento para obtener acceso a esta y a otras cosas informadas por el Monitor de rendimiento, el Administrador de tareas, etc.


Su publicación no está clara si está utilizando solicitudes 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á.


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.