Funcionalidad de diagnóstico para Reliable Services con estado
La clase StatefulServiceBase de Reliable Services con estado de Azure Service Fabric emite eventos EventSource que pueden usarse para depurar el servicio, ofrecer información acerca de cómo funciona el tiempo de ejecución y ayudar a solucionar problemas.
El nombre de EventSource para la clase StatefulServiceBase de servicios de confianza con estado es "Microsoft-ServiceFabric-Services". Los eventos de este origen aparecen en la ventana Eventos de diagnóstico cuando el servicio se está depurando en Visual Studio.
Otros ejemplos de herramientas y tecnologías que ayudan a recopilar o ver eventos EventSource son PerfView, Azure Diagnostics y Microsoft TraceEvent Library.
Nombre del evento | Id. de evento | Nivel | Descripción del evento |
---|---|---|---|
StatefulRunAsyncInvocation | 1 | Informativo | Emitido cuando se inicia la tarea RunAsync del servicio |
StatefulRunAsyncCancellation | 2 | Informativo | Emitido cuando se cancela la tarea RunAsync del servicio |
StatefulRunAsyncCompletion | 3 | Informativo | Emitido cuando finaliza la tarea RunAsync del servicio |
StatefulRunAsyncSlowCancellation | 4 | Advertencia | Emitido cuando la tarea RunAsync del servicio tarda demasiado tiempo en completar la cancelación |
StatefulRunAsyncFailure | 5 | Error | Emitido cuando la tarea RunAsync del servicio genera una excepción |
Los eventos StatefulRunAsyncInvocation, StatefulRunAsyncCompletion y StatefulRunAsyncCancellation son útiles para que el escritor del servicio comprenda el ciclo de vida de un servicio, así como el momento en que se inicia, se cancela o finaliza un servicio. Esta información puede ser útil al depurar problemas de servicio o al comprender el ciclo de vida de servicio.
Los escritores del servicio deben prestar especial atención a los eventos StatefulRunAsyncSlowCancellation y StatefulRunAsyncFailure, ya que indican problemas con el servicio.
StatefulRunAsyncFailure se genera cada vez que la tarea RunAsync() del servicio produce una excepción. Normalmente, una excepción generada indica un error en el servicio. Además, la excepción hace que se produzca un error en el servicio, por lo que se mueve a otro nodo. Esta operación puede ser cara y puede retrasar las solicitudes entrantes mientras se mueve el servicio. Los escritores del servicio deben determinar la causa de la excepción y si es posible mitigarla.
StatefulRunAsyncSlowCancellation se genera cada vez que una solicitud de cancelación de la tarea RunAsync tarda más de cuatro segundos. Cuando un servicio tarda demasiado en completar la cancelación, afecta a la capacidad del servicio de reiniciarse rápidamente en otro nodo. Este escenario puede afectar a la disponibilidad general del servicio.
El tiempo de ejecución de Reliable Services define las siguientes categorías de contador de rendimiento:
Category | Descripción |
---|---|
Replicador transaccional de Service Fabric | Contadores específicos del replicador transaccional de Azure Service Fabric |
Service Fabric TStore | Contadores específicos de Azure Service Fabric TStore |
El replicador transaccional de Service Fabric se utiliza por el administrador de estado confiable para replicar las transacciones dentro de un conjunto determinado de réplicas.
Service Fabric TStore es un componente usado en Reliable Collections para almacenar y recuperar los pares clave-valor.
La aplicación del Monitor de rendimiento de Windows que está disponible de forma predeterminada en el sistema operativo Windows puede usarse para recopilar y ver los datos del contador de rendimiento. Diagnósticos de Azure es otra opción para recopilar datos del contador de rendimiento y cargarlos en tablas de Azure.
Un clúster que tenga un gran número de Reliable Services o particiones de Reliable Services tendrá una gran cantidad de instancias de contador de rendimiento del replicador de transacciones. Esto también sucede para los contadores de rendimiento de TStore, pero también se multiplica por el número de instancias de Reliable Dictionaries y Reliable Queues. Los nombres de las instancias del contador de rendimiento pueden ayudar a identificar la partición, la réplica de servicio y el proveedor de estado específicos en el caso de TStore, con los que está asociada la instancia del contador de rendimiento.
En la categoría Service Fabric Transactional Replicator
, los nombres de instancias de contadores tienen el formato siguiente:
ServiceFabricPartitionId:ServiceFabricReplicaId
ServiceFabricPartitionId es la representación de cadena del identificador de partición de Service Fabric con el que está asociada la instancia de contador de rendimiento. El identificador de partición es un GUID y su representación de cadena se genera mediante Guid.ToString
con el especificador de formato "D".
ServiceFabricReplicaId es el identificador asociado a una réplica específica de una instancia de Reliable Services. El identificador de la réplica se incluye en el nombre de la instancia de contador de rendimiento para garantizar su unicidad y evitar conflictos con otras instancias de contador de rendimiento generadas por la misma partición. Encontrará más detalles sobre las réplicas y su función en Reliable Services aquí.
El siguiente nombre de instancia de contador es típico de un contador de la categoría Service Fabric Transactional Replicator
:
00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571
En el ejemplo anterior, 00d0126d-3e36-4d68-98da-cc4f7195d85e
es la representación de cadena del identificador de partición Service Fabric, y 131652217797162571
es el identificador de réplica.
En la categoría Service Fabric TStore
, los nombres de instancias de contadores tienen el formato siguiente:
ServiceFabricPartitionId:ServiceFabricReplicaId:StateProviderId_PerformanceCounterInstanceDifferentiator_StateProviderName
ServiceFabricPartitionId es la representación de cadena del identificador de partición de Service Fabric con el que está asociada la instancia de contador de rendimiento. El identificador de partición es un GUID y su representación de cadena se genera mediante Guid.ToString
con el especificador de formato "D".
ServiceFabricReplicaId es el identificador asociado a una réplica específica de una instancia de Reliable Services. El identificador de la réplica se incluye en el nombre de la instancia de contador de rendimiento para garantizar su unicidad y evitar conflictos con otras instancias de contador de rendimiento generadas por la misma partición. Encontrará más detalles sobre las réplicas y su función en Reliable Services aquí.
StateProviderId es el identificador asociado con un proveedor de estado dentro de un servicio de confianza. El identificador del proveedor de estado se incluye en el nombre de instancia del contador de rendimiento para diferenciar un TStore de otro.
PerformanceCounterInstanceDifferentiator es un identificador diferenciador asociado con una instancia del contador de rendimiento dentro de un proveedor de estado. Este diferenciador se incluye en el nombre de la instancia del contador de rendimiento para garantizar su unicidad y evitar conflictos con otras instancias del contador de rendimiento generadas por el mismo proveedor de estado.
StateProviderName es el nombre asociado con un proveedor de estado dentro de un servicio de confianza. El nombre del proveedor de estado se incluye en el nombre de la instancia del contador de rendimiento para que los usuarios puedan identificar fácilmente el estado que proporciona.
El siguiente nombre de instancia de contador es típico de un contador de la categoría Service Fabric TStore
:
00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571:142652217797162571_1337_urn:MyReliableDictionary/dataStore
En el ejemplo anterior, 00d0126d-3e36-4d68-98da-cc4f7195d85e
es la representación de cadena del identificador de la partición de Service Fabric, 131652217797162571
es el identificador de la réplica, 142652217797162571
es el identificador del proveedor de estado y 1337
es el diferenciador de la instancia del contador de rendimiento. urn:MyReliableDictionary/dataStore
es el nombre del proveedor de estado que almacena los datos para la colección denominada urn:MyReliableDictionary
.
El tiempo de ejecución de Reliable Services emite los siguientes eventos en la categoría Service Fabric Transactional Replicator
.
Nombre del contador | Descripción |
---|---|
Operaciones de inicio de transacción/s | El número de nuevas transacciones de escritura creadas por segundo. |
Operaciones de transacción/s | El número de operaciones de adición/actualización/eliminación realizadas en colecciones confiables por segundo. |
Vaciado del registro en bytes/s | Número de bytes que el replicador de transacciones vacía en el disco por segundo |
Operaciones limitadas/s | Número de operaciones que el replicador de transacciones rechaza cada segundo por causas de limitación. |
Prom. ms de transacción/confirmación | Latencia de confirmación media por transacción en milisegundos |
Prom. Latencia de vaciado (ms) | Duración media de las operaciones de vaciado de disco iniciadas por el replicador de transacciones en milisegundos |
El tiempo de ejecución de Reliable Services emite los siguientes eventos en la categoría Service Fabric TStore
.
Nombre del contador | Descripción |
---|---|
Número de elementos | Número de elementos en el almacén. |
Tamaño del disco | Tamaño total del disco, en bytes, de los archivos de punto de control del almacén. |
Escritura de archivos de punto de control en bytes/s | Número de bytes escritos por segundo para el archivo de punto de control más reciente. |
Transferencia de discos de copia en bytes/seg | Número de bytes de disco leídos (en la réplica principal) o escritos (en una réplica secundaria) por segundo durante una copia del almacén. |