Funzionalità di diagnostica per i servizi Reliable con statoDiagnostic functionality for Stateful Reliable Services

La classe StatefulServiceBase dei servizi Reliable con stato in Azure Service Fabric genera eventi EventSource che possono essere usati per eseguire il debug del servizio, ottenere informazioni dettagliate sul funzionamento del runtime e ottenere assistenza per la risoluzione dei problemi.The Azure Service Fabric Stateful Reliable Services StatefulServiceBase class emits EventSource events that can be used to debug the service, provide insights into how the runtime is operating, and help with troubleshooting.

Eventi EventSourceEventSource events

Il nome EventSource per la classe StatefulServiceBase dei servizi Reliable con stato è "Microsoft-ServiceFabric-Services".The EventSource name for the Stateful Reliable Services StatefulServiceBase class is "Microsoft-ServiceFabric-Services." Gli eventi provenienti da questa origine eventi vengono visualizzati nella finestra Diagnostics Events (Eventi di diagnostica) quando si esegue il debug del servizio in Visual Studio.Events from this event source appear in the Diagnostics Events window when the service is being debugged in Visual Studio.

Esempi di strumenti e tecnologie che consentono di raccogliere e/o visualizzare eventi EventSource sono PerfView, Diagnostica di Azure e la libreria TraceEvent di Microsoft.Examples of tools and technologies that help in collecting and/or viewing EventSource events are PerfView, Azure Diagnostics, and the Microsoft TraceEvent Library.

EventiEvents

Nome eventoEvent name ID eventoEvent ID LevelLevel Descrizione eventoEvent description
StatefulRunAsyncInvocationStatefulRunAsyncInvocation 11 InformazioniInformational Emesso quando l'attività RunAsync del servizio viene avviataEmitted when the service RunAsync task is started
StatefulRunAsyncCancellationStatefulRunAsyncCancellation 22 InformazioniInformational Emesso quando l'attività RunAsync del servizio viene annullataEmitted when the service RunAsync task is canceled
StatefulRunAsyncCompletionStatefulRunAsyncCompletion 33 InformazioniInformational Emesso quando l'attività RunAsync del servizio viene completataEmitted when the service RunAsync task is finished
StatefulRunAsyncSlowCancellationStatefulRunAsyncSlowCancellation 44 AvvisoWarning Emesso quando l'annullamento dell'attività RunAsync del servizio richiede troppo tempoEmitted when the service RunAsync task takes too long to complete cancellation
StatefulRunAsyncFailureStatefulRunAsyncFailure 55 Tipi di erroreError Emesso quando l'attività RunAsync del servizio genera un'eccezioneEmitted when the service RunAsync task throws an exception

Interpretazione degli eventiInterpret events

Gli eventi StatefulRunAsyncInvocation, StatefulRunAsyncCompletion e StatefulRunAsyncCancellation consentono all'autore di un servizio di comprenderne il ciclo di vita e di definirne i tempi di avvio, annullamento e completamento.StatefulRunAsyncInvocation, StatefulRunAsyncCompletion, and StatefulRunAsyncCancellation events are useful to the service writer to understand the lifecycle of a service, as well as the timing for when a service starts, cancels, or finishes. Queste informazioni possono esseri utili durante il debug dei problemi di un servizio o per la comprensione del ciclo di vita di quest'ultimo.This information can be useful when debugging service issues or understanding the service lifecycle.

Gli sviluppatori devono prestare particolare attenzione agli eventi StatefulRunAsyncSlowCancellation e StatefulRunAsyncFailure in quanto indicano la presenza di problemi relativi al servizio.Service writers should pay close attention to StatefulRunAsyncSlowCancellation and StatefulRunAsyncFailure events because they indicate issues with the service.

L'evento StatefulRunAsyncFailure viene emesso ogni volta che l'attività RunAsync() del servizio genera un'eccezione.StatefulRunAsyncFailure is emitted whenever the service RunAsync() task throws an exception. Normalmente, la generazione di un'eccezione indica la presenza di un errore o di un bug nel servizio.Typically, an exception thrown indicates an error or bug in the service. Inoltre, l'eccezione causa un esito negativo del servizio, con conseguente spostamento a un altro nodo.Additionally, the exception causes the service to fail, so it is moved to a different node. L'operazione di spostamento del servizio può risultare costosa e causare un ritardo per le richieste in ingresso.This operation can be expensive and can delay incoming requests while the service is moved. Gli sviluppatori dovrebbero determinare la causa dell'eccezione e, se possibile, limitare il problema.Service writers should determine the cause of the exception and, if possible, mitigate it.

L'evento StatefulRunAsyncSlowCancellation viene emesso ogni volta che una richiesta di annullamento dell'attività RunAsync richiede più di quattro secondi.StatefulRunAsyncSlowCancellation is emitted whenever a cancellation request for the RunAsync task takes longer than four seconds. L'eccessiva durata di un'operazione di annullamento influisce sulla possibilità di riavviare rapidamente il servizio su un altro nodo.When a service takes too long to complete cancellation, it affects the ability of the service to be quickly restarted on another node. Questo scenario può avere un impatto negativo sulla disponibilità complessiva del servizio.This scenario might affect the overall availability of the service.

Contatori delle prestazioniPerformance counters

Il runtime di Reliable Services definisce le categorie di contatori delle prestazioni seguenti:The Reliable Services runtime defines the following performance counter categories:

CategoriaCategory DescrizioneDescription
Replicatore transazionale di Service FabricService Fabric Transactional Replicator Contatori specifici di Replicatore transazionale di Service Fabric di AzureCounters specific to the Azure Service Fabric Transactional Replicator
Service Fabric TStoreService Fabric TStore Contatori specifici di Azure Service Fabric TStoreCounters specific to the Azure Service Fabric TStore

Replicatore transazionale di Service Fabric viene usato da Reliable State Manager per replicare le transazioni all'interno di un determinato set di repliche.The Service Fabric Transactional Replicator is used by the Reliable State Manager to replicate transactions within a given set of replicas.

Service Fabric TStore è un componente usato nelle raccolte Reliable Collections per archiviare e recuperare le coppie chiave-valore.The Service Fabric TStore is a component used in Reliable Collections for storing and retrieving key-value pairs.

L'applicazione Performance Monitor di Windows , disponibile per impostazione predefinita nel sistema operativo Windows, può essere usata per raccogliere e visualizzare i dati dei contatori delle prestazioni.The Windows Performance Monitor application that is available by default in the Windows operating system can be used to collect and view performance counter data. Diagnostica di Azure rappresenta una valida alternativa per la raccolta di tali dati e il relativo caricamento nelle tabelle di Azure.Azure Diagnostics is another option for collecting performance counter data and uploading it to Azure tables.

Nomi delle istanze dei contatori delle prestazioniPerformance counter instance names

Un cluster con un numero elevato di servizi Reliable Services o di partizioni di servizi Reliable Services disporrà di un numero considerevole di istanze di contatori delle prestazioni di Replicatore transazionale.A cluster that has a large number of reliable services or reliable service partitions will have a large number of transactional replicator performance counter instances. Questo avviene anche per i contatori delle prestazioni TStore, ma viene moltiplicato anche per il numero di oggetti Reliable Dictionaries e Reliable Queues usati.This is also the case for TStore performance counters, but is also multiplied by the number of Reliable Dictionaries and Reliable Queues used. I nomi delle istanze dei contatori delle prestazioni consentono di identificare la partizione, la replica del servizio e lo stato del provider specifici nel caso di TStore, a cui l'istanza del contatore delle prestazioni è associata.The performance counter instance names can help in identifying the specific partition, service replica, and state provider in the case of TStore, that the performance counter instance is associated with.

Categoria Replicatore transazionale di Service FabricService Fabric Transactional Replicator category

Per la categoria Service Fabric Transactional Replicator, i nomi delle istanze dei contatori sono nel formato seguente:For the category Service Fabric Transactional Replicator, the counter instance names are in the following format:

ServiceFabricPartitionId:ServiceFabricReplicaId

ServiceFabricPartitionId è la rappresentazione sotto forma di stringa dell'ID partizione di Service Fabric a cui è associata l'istanza del contatore delle prestazioni.ServiceFabricPartitionId is the string representation of the Service Fabric partition ID that the performance counter instance is associated with. L'ID partizione è un GUID e la relativa rappresentazione di stringa viene generata tramite Guid.ToString con l'identificatore di formato "D".The partition ID is a GUID, and its string representation is generated through Guid.ToString with format specifier "D".

ServiceFabricReplicaId è l'ID associato a una determinata replica di un servizio Reliable Services.ServiceFabricReplicaId is the ID associated with a given replica of a reliable service. L'ID replica viene incluso nel nome dell'istanza del contatore delle prestazioni per assicurarne l'univocità ed evitare conflitti con altre istanze di contatori delle prestazioni generate dalla stessa partizione.Replica ID is included in the performance counter instance name to ensure its uniqueness and avoid conflict with other performance counter instances generated by the same partition. Informazioni dettagliate sulle repliche e il relativo ruolo nei servizi Reliable Services sono disponibili qui.Further details about replicas and their role in reliable services can be found here.

Di seguito è riportato un esempio di un nome di istanza per un contatore appartenente alla categoria Service Fabric Transactional Replicator:The following counter instance name is typical for a counter under the Service Fabric Transactional Replicator category:

00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571

Nell'esempio precedente, 00d0126d-3e36-4d68-98da-cc4f7195d85e è la rappresentazione sotto forma di stringa dell'ID partizione di Service Fabric e 131652217797162571 è l'ID replica.In the preceding example, 00d0126d-3e36-4d68-98da-cc4f7195d85e is the string representation of the Service Fabric partition ID, and 131652217797162571 is the replica ID.

Categoria Service Fabric TStoreService Fabric TStore category

Per la categoria Service Fabric TStore, i nomi delle istanze dei contatori sono nel formato seguente:For the category Service Fabric TStore, the counter instance names are in the following format:

ServiceFabricPartitionId:ServiceFabricReplicaId:ServiceFabricStateProviderId_PerformanceCounterInstanceDifferentiator

ServiceFabricPartitionId è la rappresentazione sotto forma di stringa dell'ID partizione di Service Fabric a cui è associata l'istanza del contatore delle prestazioni.ServiceFabricPartitionId is the string representation of the Service Fabric partition ID that the performance counter instance is associated with. L'ID partizione è un GUID e la relativa rappresentazione di stringa viene generata tramite Guid.ToString con l'identificatore di formato "D".The partition ID is a GUID, and its string representation is generated through Guid.ToString with format specifier "D".

ServiceFabricReplicaId è l'ID associato a una determinata replica di un servizio Reliable Services.ServiceFabricReplicaId is the ID associated with a given replica of a reliable service. L'ID replica viene incluso nel nome dell'istanza del contatore delle prestazioni per assicurarne l'univocità ed evitare conflitti con altre istanze di contatori delle prestazioni generate dalla stessa partizione.Replica ID is included in the performance counter instance name to ensure its uniqueness and avoid conflict with other performance counter instances generated by the same partition. Informazioni dettagliate sulle repliche e il relativo ruolo nei servizi Reliable Services sono disponibili qui.Further details about replicas and their role in reliable services can be found here.

ServiceFabricStateProviderId è l'ID associato a un provider di stato all'interno di un servizio Reliable Services.ServiceFabricStateProviderId is the ID associated with a state provider within a reliable service. L'ID del provider di stato è incluso nel nome dell'istanza del contatore delle prestazioni per differenziare un TStore da un altro.State Provider ID is included in the performance counter instance name to differentiate a TStore from another.

PerformanceCounterInstanceDifferentiator è un ID di differenziazione associato a un'istanza del contatore delle prestazioni all'interno di un provider di stato.PerformanceCounterInstanceDifferentiator is a differentiating ID associated with a performance counter instance within a state provider. Il differenziatore viene incluso nel nome dell'istanza del contatore delle prestazioni per assicurarne l'univocità ed evitare conflitti con altre istanze di contatori delle prestazioni generate dallo stesso provider di stato.This differentiator is included in the performance counter instance name to ensure its uniqueness and avoid conflict with other performance counter instances generated by the same state provider.

Di seguito è riportato un esempio di un nome di istanza per un contatore appartenente alla categoria Service Fabric TStore:The following counter instance name is typical for a counter under the Service Fabric TStore category:

00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571:142652217797162571_1337

Nell'esempio precedente, 00d0126d-3e36-4d68-98da-cc4f7195d85e è la rappresentazione in formato stringa dell'ID della partizione di Service Fabric, 131652217797162571 è l'ID della replica, 142652217797162571 è l'ID del provider di stato e 1337 è il differenziatore dell'istanza del contatore delle prestazioni.In the preceding example, 00d0126d-3e36-4d68-98da-cc4f7195d85e is the string representation of the Service Fabric partition ID, 131652217797162571 is the replica ID, 142652217797162571 is the state provider ID, and 1337 is the performance counter instance differentiator.

Contatori delle prestazioni di Replicatore transazionaleTransactional Replicator performance counters

Il runtime di Reliable Services genera gli eventi seguenti nella categoria Service Fabric Transactional ReplicatorThe Reliable Services runtime emits the following events under the Service Fabric Transactional Replicator category

Nome contatoreCounter name DescrizioneDescription
Operazioni di inizio transazione/secBegin Txn Operations/sec Numero di nuove transazioni di scrittura create al secondo.The number of new write transactions created per second.
Operazioni di transazione/secTxn Operations/sec Numero di operazioni di aggiunta/aggiornamento/eliminazione eseguite su raccolte Reliable Collections al secondo.The number of add/update/delete operations performed on reliable collections per second.
Avg. media flush (ms)Avg. Flush Latency (ms) Numero di byte scaricati sul disco da Replicatore transazionale al secondo.The number of bytes being flushed to the disk by the Transactional Replicator per second
Operazioni limitate/secThrottled Operations/sec Numero di operazioni rifiutate al secondo da Replicatore transazionale a causa della limitazione.The number of operations rejected every second by the Transactional Replicator due to throttling.
Avg. transazione/commit (ms)Avg. Transaction ms/Commit Latenza media commit per transazione in millisecondiAverage commit latency per transaction in milliseconds
Avg. media flush (ms)Avg. Flush Latency (ms) Durata media delle operazioni di flush su disco avviate da Replicatore transazionale in millisecondiAverage duration of disk flush operations initiated by the Transactional Replicator in milliseconds

Contatori delle prestazioni di TStoreTStore performance counters

Il runtime di Reliable Services genera gli eventi seguenti nella categoria Service Fabric TStoreThe Reliable Services runtime emits the following events under the Service Fabric TStore category

Nome contatoreCounter name DescrizioneDescription
Item CountItem Count Numero di chiavi nell'archivio.The number of keys in the store.

Passaggi successiviNext steps

Provider di EventSource in PerfViewEventSource providers in PerfView