Instrumentation – Performance Counters en WCF

 

Despues de dos semanitas de vacaciones, sin hacer nada de nada, ya llegan a su fin y lo primero es, aunque tarde,  felicitar el nuevo año a todo el mundo.

Las aplicaciones de negocios tienen la necesidad de soportar una cierta cantidad de carga concurrente en un tiempo de respuesta admisible.

En algunas oportunidades la performance se ve degradada, es decir, los tiempos de respuesta no son admisibles y es necesario consultar indicadores (Performance Counters) que permiten detectar donde están los puntos donde trabajar para obtener mejor rendimiento (fine tuning).

Windows Communication Foundation provee una gran cantidad de Performance Counters que permiten evaluar la performance de un servicio WCF.

Algunos ejemplos son Calls, Calls Duration, Calls Faulted, Transacted Operations Committed per second y muchos más.

Estos indicadores son provistos por WCF en distintos niveles de agregación. El nivel más granular es ver los indicadores detallados por Operation, el siguiente es verlos agrupando todas las Operations de un EndPoint y por último es ver los indicadores a nivel Service es decir todos los Endpoints agrupados.

Una vez arrancado nuestro servicio WCF y el cliente, para ver los contadores

1. Hacemos Start -> Run -> perfmon.exe

2. Abrimos el módulo para agregar contadores (Ctrl. + I)

3. Elegimos de la lista de Performance Object el ServiceModelOperation 3.0

4. Elegimos las instancias de las operaciones que queremos monitorizar

5. Hacemos uso de las opciones del servicio a través del cliente web

6. Miramos el Perfomance Monitor y veremos reflejada la actividad realizada.

 

Habilitar los Performance Counters en un servicio de WCF es algo sencillo. Tan solo hay que agregar la siguiente configuración:

<system.serviceModel>

<diagnostics performanceCounters=»All»>

</diagnostics>

</system.serviceModel>

A continuación vemos el Performance Monitor midiendo las llamadas (Calls) y su duración (Calls Duration) a dos operaciones por separado. Es decir son Performance Counters a nivel de Operation.

 

Performance Objects

Como mencionamos anterioremente WCF provee de tres tipos de Performance Objects.

· Service performance counters

· Endpoint performance counters

· Operation performance counters

Cada Performance Object puede tener varias instancias por lo cual para identificarlas se sigue la siguiente nomenclatura.

Service performance counter Instance

(ServiceName)@(endpoint listener address)

Endpoint performance counters Instance

(ServiceName).(ContractName)@(endpoint listener address)

Operation performance counters Instance

(ServiceName).(ContractName).(OperationName)@(first endpoint listener address)

Aquí podemos ver un ejemplo de Operation Performance Object con diversas instancias:

 

Algunos ejemplos de Performance Counters de la plataforma WCF son:

  • Calls
  • Calls Duration
  • Calls Failed
  • Calls Failed Per Second
  • Calls Faulted
  • Calls Faulted Per Second
  • Calls Outstanding
  • Calls Per Second
  • Reliable Messaging Messages Dropped
  • Reliable Messaging Messages Dropped Per Second
  • Reliable Messaging Sessions Failed Per Second
  • Security Calls Not Authorized
  • Security Calls Not Authorized Per Second
  • Security Validation And Authentication Failures Per Second
  • Transactions Flowed
  • Transactions Flowed Per Second