Usare i report sull'integrità del sistema per la risoluzione dei problemiUse system health reports to troubleshoot

I componenti di Azure Service Fabric forniscono report sull'integrità del sistema in tutte le entità del cluster per impostazione predefinita.Azure Service Fabric components provide system health reports on all entities in the cluster right out of the box. L' archivio integrità crea ed elimina le entità in base ai report di sistema.The health store creates and deletes entities based on the system reports. Le organizza anche in una gerarchia che acquisisce le interazioni delle entità.It also organizes them in a hierarchy that captures entity interactions.

Nota

Per comprendere i concetti correlati all'integrità, vedere altre informazioni sul modello di integrità di Service Fabric.To understand health-related concepts, read more at Service Fabric health model.

I report sull'integrità del sistema offrono visibilità sulle funzionalità del cluster e dell'applicazione e contrassegnano i problemi.System health reports provide visibility into cluster and application functionality, and flag problems. Per le applicazioni e i servizi i report sull'integrità del sistema verificano che le entità siano implementate e si comportino correttamente dal punto di vista di Service Fabric.For applications and services, system health reports verify that entities are implemented and are behaving correctly from the Service Fabric perspective. I report non forniscono il monitoraggio dell'integrità della logica di business del servizio o il rilevamento dei processi bloccati.The reports don't provide any health monitoring of the business logic of the service or detection of hung processes. I servizi utente possono arricchire i dati di integrità con informazioni specifiche per la logica.User services can enrich the health data with information specific to their logic.

Nota

I report sull'integrità inviati dai watchdog degli utenti sono visibili solo dopo che i componenti di sistema hanno creato un'entità.Health reports sent by user watchdogs are visible only after the system components create an entity. Quando si elimina un'entità, l'archivio integrità elimina automaticamente tutti i report sull'integrità associati.When an entity is deleted, the health store automatically deletes all the health reports associated with it. Lo stesso vale quando si crea una nuova istanza dell'entità, ad esempio quando viene creata una nuova istanza di replica del servizio persistente con stato.The same is true when a new instance of the entity is created, for example, when a new stateful persisted service replica instance is created. Tutti i report associati all'istanza precedente vengono eliminati e rimossi dall'archivio.All reports associated with the old instance are deleted and cleaned up from the store.

I report sui componenti di sistema vengono identificati dall'origine, che inizia con il prefisso "System."The system component reports are identified by the source, which starts with the "System." .prefix. I watchdog non possono usare lo stesso prefisso per le proprie origini, perché i report con parametri non validi vengono rifiutati.Watchdogs can't use the same prefix for their sources, as reports with invalid parameters are rejected.

Si osserveranno alcuni report di sistema per capire da quali eventi vengono attivati e come risolvere i potenziali problemi che rappresentano.Let's look at some system reports to understand what triggers them and to learn how to correct the potential problems they represent.

Nota

Service Fabric continua ad aggiungere report sulle condizioni di interesse, che migliorano la visibilità su quanto avviene nel cluster e nelle applicazioni. I report esistenti possono essere ottimizzati con altri dettagli per risolvere il problema più velocemente.Service Fabric continues to add reports on conditions of interest that improve visibility into what is happening in the cluster and the applications Existing reports can be enhanced with more details to help troubleshoot the problem faster.

Report sull'integrità del sistema clusterCluster system health reports

L'entità di integrità del cluster viene creata automaticamente nell'archivio integrità.The cluster health entity is created automatically in the health store. Se tutto funziona correttamente, non è disponibile un report di sistema.If everything works properly, it doesn't have a system report.

Perdita di nodi viciniNeighborhood loss

System.Federation segnala un errore quando rileva una perdita di nodi vicini.System.Federation reports an error when it detects a neighborhood loss. Il report è relativo a singoli nodi e l'ID del nodo è incluso nel nome della proprietà.The report is from individual nodes, and the node ID is included in the property name. Se si verifica la perdita di un nodo vicino nell'intero anello di Service Fabric, in genere è possibile prevedere due eventi che rappresentano entrambi i lati del report sul gap.If one neighborhood is lost in the entire Service Fabric ring, you can typically expect two events that represent both sides of the gap report. In caso di perdita di più nodi vicini, si verificano più eventi.If more neighborhoods are lost, there are more events.

Il report specifica il timeout di lease globale come durata (TTL).The report specifies the global-lease timeout as the time-to-live (TTL). Il report viene inviato di nuovo ogni metà della durata TTL finché la condizione rimane attiva.The report is resent every half of the TTL duration for as long as the condition remains active. Quando scade, l'evento viene rimosso automaticamente.The event is automatically removed when it expires. Il comportamento di rimozione alla scadenza garantisce la corretta eliminazione del report dall'archivio integrità anche quando il nodo da cui è stato creato è inattivo.Remove-when-expired behavior ensures that the report is cleaned up from the health store correctly, even if the reporting node is down.

  • SourceId: System.FederationSourceId: System.Federation
  • Property: inizia con Neighborhood e include informazioni sul nodo.Property: Starts with Neighborhood and includes node information.
  • Passaggi successivi: analizzare il motivo della perdita del nodo vicino, ad esempio controllare la comunicazione tra i nodi del cluster.Next steps: Investigate why the neighborhood is lost, for example, check the communication between cluster nodes.

RicompilazioneRebuild

Il servizio Gestione failover (FM) gestisce le informazioni relative ai nodi del cluster.The Failover Manager service (FM) manages information about the cluster nodes. In caso di perdita dei dati, il servizio Gestione failover non è in grado di garantire la disponibilità delle informazioni più aggiornate sui nodi del cluster.When FM loses its data and goes into data loss it can't guarantee that it has the most updated information about the cluster nodes. In questo caso, il sistema esegue una ricompilazione e l'evento System.FM raccoglie i dati da tutti i nodi nel cluster per ricompilare il proprio stato.In this case, the system goes through a Rebuild, and System.FM gathers data from all nodes in the cluster in order to rebuild its state. In alcuni casi, a causa di problemi a livello di nodo o rete, è possibile che la ricompilazione si blocchi.Sometimes, due to networking or node issues, rebuild could get stuck or stalled. Lo stesso problema può verificarsi con il servizio Failover Manager Master (FMM).The same could happen with the Failover Manager Master service (FMM). FMM è un servizio di sistema senza stato che tiene traccia della posizione in cui si trovano tutte le istanze del servizio FM nel cluster.The FMM is a stateless system service that keeps track of where all of the FMs are in the cluster. Il servizio FMM principale corrisponde sempre al nodo con l'ID più prossimo allo zero.The FMMs primary is always the node with the ID closest to 0. In caso di rilascio del nodo, viene attivato un evento di ricompilazione.If that node gets dropped, a Rebuild is triggered. Quando si verifica una delle condizioni precedenti, System.FM o System.FMM contrassegna tale condizione tramite un report degli errori.When one of the previous conditions happen, System.FM or System.FMM flag it through an Error report. La ricompilazione può rimanere bloccata in una delle due fasi seguenti:Rebuild could be stuck in one of two phases:

  • In attesa di trasmissione: FM/FMM attende la risposta del messaggio di trasmissione dagli altri nodi.Waiting for broadcast: FM/FMM waits for the broadcast message reply from the other nodes. Passaggi successivi: controllare se si è verificato un problema di connessione di rete tra i nodi.Next steps: Investigate whether there is a network connection issue between nodes.
  • In attesa dei nodi: FM/FMM ha già ricevuto una risposta di trasmissione dagli altri nodi ed è in attesa di una risposta da nodi specifici.Waiting for nodes: FM/FMM already received a broadcast reply from the other nodes and is waiting for a reply from specific nodes. Nel report sull'integrità sono elencati i nodi per il quale il servizio FM/FMM è in attesa di una risposta.The health report lists the nodes for which the FM/FMM is waiting for a response. Passaggi successivi: verificare la connessione di rete tra FM/FMM e i nodi elencati.Next steps: Investigate the network connection between the FM/FMM and the listed nodes. Esaminare ogni nodo elencato per individuare altri possibili problemi.Investigate each listed node for other possible issues.

  • SourceID: System.FM o System.FMMSourceID: System.FM or System.FMM

  • Property: Rebuild.Property: Rebuild.
  • Passaggi successivi: verificare la connessione di rete tra i nodi e lo stato di nodi specifici riportati nell'elenco di descrizioni del report sull'integrità.Next steps: Investigate the network connection between the nodes, as well as the state of any specific nodes that are listed on the description of the health report.

Report sull'integrità del sistema di nodiNode system health reports

System.FM, che rappresenta il servizio Gestione failover, è l'autorità che gestisce le informazioni sui nodi del cluster.System.FM, which represents the Failover Manager service, is the authority that manages information about cluster nodes. Ogni nodo deve avere un report generato da System.FM che mostra il relativo stato.Each node should have one report from System.FM showing its state. Le entità nodo vengono rimosse quando viene rimosso lo stato del nodo.The node entities are removed when the node state is removed. Per altre informazioni, vedere RemoveNodeStateAsync.For more information, see RemoveNodeStateAsync.

Nodo attivo/inattivoNode up/down

System.FM restituisce OK quando il nodo viene aggiunto all'anello, ovvero è operativo.System.FM reports as OK when the node joins the ring (it's up and running). Segnala un errore quando il nodo non fa più parte dell'anello, ovvero è inattivo perché è in corso un aggiornamento o semplicemente perché si è verificato un errore.It reports an error when the node departs the ring (it's down, either for upgrading or simply because it has failed). La gerarchia di integrità creata dall'archivio integrità agisce sulle entità distribuite in correlazione con i report sui nodi di System.FM.The health hierarchy built by the health store acts on deployed entities in correlation with System.FM node reports. Considera il nodo un elemento padre virtuale di tutte le entità distribuite.It considers the node a virtual parent of all deployed entities. Le entità distribuite in tale nodo vengono esposte tramite query se il nodo è segnalato come attivo da System.FM, con la stessa istanza associata alle entità.The deployed entities on that node are exposed through queries if the node is reported as up by System.FM, with the same instance as the instance associated with the entities. Quando System.FM segnala che il nodo è inattivo o riavviato, come nuova istanza, l'archivio integrità elimina automaticamente le entità distribuite che possono esistere solo nel nodo inattivo o nell'istanza precedente del nodo.When System.FM reports that the node is down or restarted, as a new instance, the health store automatically cleans up the deployed entities that can exist only on the down node or on the previous instance of the node.

  • SourceId: System.FMSourceId: System.FM
  • Property: State.Property: State.
  • Passaggi successivi: se il nodo è inattivo per un aggiornamento, tornerà attivo dopo l'aggiornamento.Next steps: If the node is down for an upgrade, it should come back up after it's been upgraded. In questo caso, lo stato di integrità deve tornare a essere OK.In this case, the health state should switch back to OK. Se il nodo non ritorna attivo o in caso di errore, è necessario proseguire nell'analisi del problema.If the node doesn't come back or it fails, the problem needs more investigation.

L'esempio seguente illustra l'evento System.FM con stato di integrità OK per il nodo attivo:The following example shows the System.FM event with a health state of OK for node up:

PS C:\> Get-ServiceFabricNodeHealth  _Node_0

NodeName              : _Node_0
AggregatedHealthState : Ok
HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 8
                        SentAt                : 7/14/2017 4:54:51 PM
                        ReceivedAt            : 7/14/2017 4:55:14 PM
                        TTL                   : Infinite
                        Description           : Fabric node is up.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/14/2017 4:55:14 PM, LastWarning = 1/1/0001 12:00:00 AM

Scadenza dei certificatiCertificate expiration

System.FabricNode segnala una condizione di avviso quando si avvicina la scadenza dei certificati usati dal nodo.System.FabricNode reports a warning when certificates used by the node are near expiration. Ogni nodo ha tre certificati: Certificate_cluster, Certificate_server e Certificate_default_client.There are three certificates per node: Certificate_cluster, Certificate_server, and Certificate_default_client. Quando mancano almeno due settimane alla scadenza, lo stato di integrità del report è OK.When the expiration is at least two weeks away, the report health state is OK. Quando la scadenza è entro due settimane, il tipo di report è un avviso.When the expiration is within two weeks, the report type is a warning. Il valore TTL di questi eventi è infinito e vengono rimossi quando un nodo esce dal cluster.TTL of these events is infinite, and they are removed when a node leaves the cluster.

  • SourceId: System.FabricNodeSourceId: System.FabricNode
  • Property: inizia con Certificate e contiene altre informazioni sul tipo di certificato.Property: Starts with Certificate and contains more information about the certificate type.
  • Passaggi successivi: aggiornare i certificati se sono prossimi alla scadenza.Next steps: Update the certificates if they are near expiration.

Violazione della capacità di caricoLoad capacity violation

Il servizio di bilanciamento del carico di Service Fabric segnala un avviso se rileva una violazione della capacità del nodo.The Service Fabric Load Balancer reports a warning when it detects a node capacity violation.

  • SourceId: System.PLBSourceId: System.PLB
  • Property: inizia con Capacity.Property: Starts with Capacity.
  • Passaggi successivi: controllare la metrica fornita e visualizzare la capacità corrente nel nodo.Next steps: Check the provided metrics and view the current capacity on the node.

Mancata corrispondenza della capacità del nodo per la metrica di governance delle risorseNode capacity mismatch for resource governance metrics

System.Hosting genera un avviso se le capacità del nodo definite nel manifesto del cluster sono maggiori rispetto alle capacità reali per la metrica di governance delle risorse (memoria e core CPU).System.Hosting reports a warning if defined node capacities in the cluster manifest are larger than the real node capacities for resource governance metrics (memory and cpu cores). Verrà visualizzato il report di integrità in occasione della registrazione del primo pacchetto del servizio che usa la governance delle risorse in un nodo specificato.Health report will be shown up when first service package that uses resource governance registers on a specified node.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: ResourceGovernanceProperty: ResourceGovernance
  • Passaggi successivi: può trattarsi di un problema, perché i pacchetti del servizio che implementano la governance non verranno applicati come previsto e la governance delle risorse non funzionerà correttamente.Next steps: This can be a problem as governing service packages will not be enforced as expected and resource governance will not work properly. Aggiornare il manifesto del cluster con le capacità del nodo corrette per questa metrica oppure non specificarle affatto e consentire a Service Fabric di rilevare automaticamente le risorse disponibili.Update the cluster manifest with correct node capacities for these metrics or do not specify them at all and let Service Fabric to automatically detect available resources.

Report sull'integrità del sistema di applicazioniApplication system health reports

System.CM, che rappresenta il servizio Cluster Manager, è l'autorità che gestisce le informazioni sull'applicazione.System.CM, which represents the Cluster Manager service, is the authority that manages information about an application.

StatoState

System.CM restituisce OK quando l'applicazione viene creata o aggiornata.System.CM reports as OK when the application has been created or updated. Informa l'archivio integrità quando l'applicazione viene eliminata, in modo che possa essere rimossa dall'archivio.It informs the health store when the application has been deleted, so that it can be removed from the store.

  • SourceId: System.CMSourceId: System.CM
  • Property: State.Property: State.
  • Passaggi successivi: se l'applicazione è stata creata o aggiornata, deve includere il report sull'integrità dello strumento di gestione cluster.Next steps: If the application has been created or updated, it should include the Cluster Manager health report. In caso contrario, controllare lo stato dell'applicazione eseguendo una query, ad esempio con il cmdlet di PowerShell Get-ServiceFabricApplication -ApplicationName nomeApplicazione.Otherwise, check the state of the application by issuing a query, for example, the PowerShell cmdlet Get-ServiceFabricApplication -ApplicationName applicationName.

L'esempio seguente illustra l'evento State nell'applicazione fabric:/WordCount :The following example shows the state event on the fabric:/WordCount application:

PS C:\> Get-ServiceFabricApplicationHealth fabric:/WordCount -ServicesFilter None -DeployedApplicationsFilter None -ExcludeHealthStatistics

ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Ok
ServiceHealthStates             : None
DeployedApplicationHealthStates : None
HealthEvents                    : 
                                  SourceId              : System.CM
                                  Property              : State
                                  HealthState           : Ok
                                  SequenceNumber        : 282
                                  SentAt                : 7/13/2017 5:57:05 PM
                                  ReceivedAt            : 7/14/2017 4:55:10 PM
                                  TTL                   : Infinite
                                  Description           : Application has been created.
                                  RemoveWhenExpired     : False
                                  IsExpired             : False
                                  Transitions           : Error->Ok = 7/13/2017 5:57:05 PM, LastWarning = 1/1/0001 12:00:00 AM

Report sull'integrità del sistema di serviziService system health reports

System.FM, che rappresenta il servizio Gestione failover, è l'autorità che gestisce le informazioni sui servizi.System.FM, which represents the Failover Manager service, is the authority that manages information about services.

StatoState

System.FM restituisce OK quando il servizio viene creato.System.FM reports as OK when the service has been created. Elimina l'entità dall'archivio integrità quando il servizio viene eliminato.It deletes the entity from the health store when the service has been deleted.

  • SourceId: System.FMSourceId: System.FM
  • Property: State.Property: State.

L'esempio seguente illustra l'evento State nel servizio fabric:/WordCount/WordCountWebService:The following example shows the state event on the service fabric:/WordCount/WordCountWebService:

PS C:\> Get-ServiceFabricServiceHealth fabric:/WordCount/WordCountWebService -ExcludeHealthStatistics


ServiceName           : fabric:/WordCount/WordCountWebService
AggregatedHealthState : Ok
PartitionHealthStates : 
                        PartitionId           : 8bbcd03a-3a53-47ec-a5f1-9b77f73c53b2
                        AggregatedHealthState : Ok

HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 14
                        SentAt                : 7/13/2017 5:57:05 PM
                        ReceivedAt            : 7/14/2017 4:55:10 PM
                        TTL                   : Infinite
                        Description           : Service has been created.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

Errore di correlazione del servizioService correlation error

System.PLB segnala un errore quando rileva che l'aggiornamento di un servizio è correlato con un altro servizio che crea una catena di affinità.System.PLB reports an error when it detects that updating a service is correlated with another service that creates an affinity chain. Il report viene cancellato quando un aggiornamento viene completato correttamente.The report is cleared when a successful update happens.

  • SourceId: System.PLBSourceId: System.PLB
  • Property: ServiceDescription.Property: ServiceDescription.
  • Passaggi successivi: controllare le descrizioni dei servizi correlati.Next steps: Check the correlated service descriptions.

Report sull'integrità del sistema di partizioniPartition system health reports

System.FM, che rappresenta il servizio Gestione failover, è l'autorità che gestisce le informazioni sulle partizioni del servizio.System.FM, which represents the Failover Manager service, is the authority that manages information about service partitions.

StatoState

System.FM restituisce OK quando la partizione viene creata ed è integra.System.FM reports as OK when the partition has been created and is healthy. Elimina l'entità dall'archivio integrità quando la partizione viene eliminata.It deletes the entity from the health store when the partition is deleted.

Se il numero di repliche della partizione è inferiore al minimo, viene segnalata una condizione di errore.If the partition is below the minimum replica count, it reports an error. Se il numero di repliche della partizione non è inferiore al minimo, ma è al di sotto del numero di repliche di destinazione, viene segnalata una condizione di avviso.If the partition is not below the minimum replica count, but it's below the target replica count, it reports a warning. Se la partizione è in una condizione di perdita del quorum, System.FM segnala un errore.If the partition is in quorum loss, System.FM reports an error.

Altri eventi significativi includono un avviso quando le operazioni di riconfigurazione e di compilazione richiedono più tempo del previsto.Other notable events include a warning when the reconfiguration takes longer than expected and when the build takes longer than expected. I tempi previsti per la compilazione e la riconfigurazione sono configurabili in base agli scenari del servizio.The expected times for the build and reconfiguration are configurable based on the service scenarios. Ad esempio, se un servizio ha uno stato di un terabyte, ad esempio un database SQL di Azure, la compilazione richiederà più tempo rispetto a un servizio con una quantità di stato ridotta.For example, if a service has a terabyte of state, such as Azure SQL Database, the build takes longer than for a service with a small amount of state.

  • SourceId: System.FMSourceId: System.FM
  • Property: State.Property: State.
  • Passaggi successivi: se lo stato di integrità non è OK, è possibile che alcune repliche non vengano create, aperte o alzate di livello, primario o secondario, nel modo corretto.Next steps: If the health state is not OK, it's possible that some replicas have not been created, opened, or promoted to primary or secondary correctly.

Se la descrizione indica una perdita di quorum, cercando nel report sull'integrità dettagliato le repliche inattive e ripristinandole, è possibile portare nuovamente online la partizione.If the description describes quorum loss, then examining the detailed health report for replicas that are down and bringing them back up helps to bring the partition back online.

Se la descrizione indica una partizione bloccata nella fase di riconfigurazione, il report sull'integrità della replica primaria fornisce informazioni aggiuntive.If the description describes a partition stuck in reconfiguration, then the health report on the primary replica provides additional information.

Per altri report sull'integrità di System.FM, è consigliabile vedere i report sulle repliche, la partizione o il servizio generati da altri componenti di sistema.For other System.FM health reports, there would be reports on the replicas or the partition or service from other system components.

Gli esempi seguenti descrivono alcuni di questi report.The following examples describe some of these reports.

L'esempio seguente illustra una partizione integra:The following example shows a healthy partition:

PS C:\> Get-ServiceFabricPartition fabric:/WordCount/WordCountWebService | Get-ServiceFabricPartitionHealth -ExcludeHealthStatistics -ReplicasFilter None

PartitionId           : 8bbcd03a-3a53-47ec-a5f1-9b77f73c53b2
AggregatedHealthState : Ok
ReplicaHealthStates   : None
HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 70
                        SentAt                : 7/13/2017 5:57:05 PM
                        ReceivedAt            : 7/14/2017 4:55:10 PM
                        TTL                   : Infinite
                        Description           : Partition is healthy.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

L'esempio seguente illustra l'integrità di una partizione che è al di sotto del numero di repliche di destinazione.The following example shows the health of a partition that's below target replica count. Il passaggio successivo consiste nell'ottenere la descrizione della partizione, che mostra come è configurata: MinReplicaSetSize corrisponde a tre e TargetReplicaSetSize a sette.The next step is to get the partition description, which shows how it's configured: MinReplicaSetSize is three and TargetReplicaSetSize is seven. Ottenere quindi il numero di nodi nel cluster, che in questo caso è pari a cinque.Then get the number of nodes in the cluster, which in this case is five. In questo caso, non è quindi possibile inserire due repliche perché il numero di repliche di destinazione è superiore al numero di nodi disponibili.So, in this case, two replicas can't be placed, because the target number of replicas is higher than the number of nodes available.

PS C:\> Get-ServiceFabricPartition fabric:/WordCount/WordCountService | Get-ServiceFabricPartitionHealth -ReplicasFilter None -ExcludeHealthStatistics


PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.

ReplicaHealthStates   : None
HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Warning
                        SequenceNumber        : 123
                        SentAt                : 7/14/2017 4:55:39 PM
                        ReceivedAt            : 7/14/2017 4:55:44 PM
                        TTL                   : Infinite
                        Description           : Partition is below target replica or instance count.
                        fabric:/WordCount/WordCountService 7 2 af2e3e44-a8f8-45ac-9f31-4093eb897600
                          N/S Ready _Node_2 131444422260002646
                          N/S Ready _Node_4 131444422293113678
                          N/S Ready _Node_3 131444422293113679
                          N/S Ready _Node_1 131444422293118720
                          N/P Ready _Node_0 131444422293118721
                          (Showing 5 out of 5 replicas. Total available replicas: 5)

                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Warning = 7/14/2017 4:55:44 PM, LastOk = 1/1/0001 12:00:00 AM

                        SourceId              : System.PLB
                        Property              : ServiceReplicaUnplacedHealth_Secondary_af2e3e44-a8f8-45ac-9f31-4093eb897600
                        HealthState           : Warning
                        SequenceNumber        : 131445250939703027
                        SentAt                : 7/14/2017 4:58:13 PM
                        ReceivedAt            : 7/14/2017 4:58:14 PM
                        TTL                   : 00:01:05
                        Description           : The Load Balancer was unable to find a placement for one or more of the Service's Replicas:
                        Secondary replica could not be placed due to the following constraints and properties:  
                        TargetReplicaSetSize: 7
                        Placement Constraint: N/A
                        Parent Service: N/A

                        Constraint Elimination Sequence:
                        Existing Secondary Replicas eliminated 4 possible node(s) for placement -- 1/5 node(s) remain.
                        Existing Primary Replica eliminated 1 possible node(s) for placement -- 0/5 node(s) remain.

                        Nodes Eliminated By Constraints:

                        Existing Secondary Replicas -- Nodes with Partition's Existing Secondary Replicas/Instances:
                        --
                        FaultDomain:fd:/4 NodeName:_Node_4 NodeType:NodeType4 UpgradeDomain:4 UpgradeDomain: ud:/4 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/3 NodeName:_Node_3 NodeType:NodeType3 UpgradeDomain:3 UpgradeDomain: ud:/3 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/2 NodeName:_Node_2 NodeType:NodeType2 UpgradeDomain:2 UpgradeDomain: ud:/2 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/1 NodeName:_Node_1 NodeType:NodeType1 UpgradeDomain:1 UpgradeDomain: ud:/1 Deactivation Intent/Status: None/None

                        Existing Primary Replica -- Nodes with Partition's Existing Primary Replica or Secondary Replicas:
                        --
                        FaultDomain:fd:/0 NodeName:_Node_0 NodeType:NodeType0 UpgradeDomain:0 UpgradeDomain: ud:/0 Deactivation Intent/Status: None/None


                        RemoveWhenExpired     : True
                        IsExpired             : False
                        Transitions           : Error->Warning = 7/14/2017 4:56:14 PM, LastOk = 1/1/0001 12:00:00 AM

PS C:\> Get-ServiceFabricPartition fabric:/WordCount/WordCountService | select MinReplicaSetSize,TargetReplicaSetSize

MinReplicaSetSize TargetReplicaSetSize
----------------- --------------------
                2                    7                        

PS C:\> @(Get-ServiceFabricNode).Count
5

L'esempio seguente illustra l'integrità di una partizione è bloccata nella fase di riconfigurazione perché l'utente non rispetta il token di annullamento nel metodo RunAsync.The following example shows the health of a partition that's stuck in reconfiguration due to the user not honoring the cancellation token in the RunAsync method. L'esame del report sull'integrità di qualsiasi replica contrassegnata come primary (P) consente di approfondire ulteriormente il problema.Investigating the health report of any replica marked as primary (P) can help to drill down further into the problem.

PS C:\utilities\ServiceFabricExplorer\ClientPackage\lib> Get-ServiceFabricPartitionHealth 0e40fd81-284d-4be4-a665-13bc5a6607ec -ExcludeHealthStatistics 


PartitionId           : 0e40fd81-284d-4be4-a665-13bc5a6607ec
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', 
                        ConsiderWarningAsError=false.

HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Warning
                        SequenceNumber        : 7
                        SentAt                : 8/27/2017 3:43:09 AM
                        ReceivedAt            : 8/27/2017 3:43:32 AM
                        TTL                   : Infinite
                        Description           : Partition reconfiguration is taking longer than expected.
                        fabric:/app/test1 3 1 0e40fd81-284d-4be4-a665-13bc5a6607ec
                          P/S Ready Node1 131482789658160654
                          S/P Ready Node2 131482789688598467
                          S/S Ready Node3 131482789688598468
                          (Showing 3 out of 3 replicas. Total available replicas: 3)                        

                        For more information see: http://aka.ms/sfhealth
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Ok->Warning = 8/27/2017 3:43:32 AM, LastError = 1/1/0001 12:00:00 AM

Questo report sull'integrità illustra lo stato delle repliche della partizione in fase di riconfigurazione:This health report shows the state of the replicas of the partition undergoing reconfiguration:

  P/S Ready Node1 131482789658160654
  S/P Ready Node2 131482789688598467
  S/S Ready Node3 131482789688598468

Per ogni replica, il report sull'integrità include le informazioni seguenti:For each replica, the health report contains:

  • Ruolo di configurazione precedentePrevious configuration role
  • Ruolo di configurazione correnteCurrent configuration role
  • Stato della replicaReplica state
  • Nodo in cui la replica è in esecuzioneNode on which the replica is running
  • ID replicaReplica ID

In un caso come quello dell'esempio, sono necessari ulteriori approfondimenti.In a case like the example, further investigation is needed. Verificare l'integrità di ogni singola replica a partire dalle repliche contrassegnate come Primary e Secondary (131482789658160654 e 131482789688598467) nell'esempio precedente.Investigate the health of each individual replica starting with the replicas marked as Primary and Secondary (131482789658160654 and 131482789688598467) in the previous example.

Violazione del vincolo di replicaReplica constraint violation

System.PLB segnala un avviso se rileva una violazione del vincolo di replica e non può posizionare tutte le repliche della partizione.System.PLB reports a warning if it detects a replica constraint violation and can't place all partition replicas. Il report indica in modo dettagliato i vincoli e le proprietà che impediscono il posizionamento della replica.The report details show which constraints and properties prevent the replica placement.

  • SourceId: System.PLBSourceId: System.PLB
  • Property: inizia con ReplicaConstraintViolation.Property: Starts with ReplicaConstraintViolation.

Report sull'integrità del sistema di replicheReplica system health reports

System.RA, che rappresenta il componente agente di riconfigurazione, è l'autorità per lo stato della replica.System.RA, which represents the reconfiguration agent component, is the authority for the replica state.

StatoState

System.RA restituisce OK quando viene creata la replica.System.RA reports OK when the replica has been created.

  • SourceId: System.RASourceId: System.RA
  • Property: State.Property: State.

L'esempio seguente illustra una replica integra:The following example shows a healthy replica:

PS C:\> Get-ServiceFabricPartition fabric:/WordCount/WordCountService | Get-ServiceFabricReplica | where {$_.ReplicaRole -eq "Primary"} | Get-ServiceFabricReplicaHealth

PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
ReplicaId             : 131444422293118721
AggregatedHealthState : Ok
HealthEvents          : 
                        SourceId              : System.RA
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 131445248920273536
                        SentAt                : 7/14/2017 4:54:52 PM
                        ReceivedAt            : 7/14/2017 4:55:13 PM
                        TTL                   : Infinite
                        Description           : Replica has been created._Node_0
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/14/2017 4:55:13 PM, LastWarning = 1/1/0001 12:00:00 AM

ReplicaOpenStatus, ReplicaCloseStatus, ReplicaChangeRoleStatusReplicaOpenStatus, ReplicaCloseStatus, ReplicaChangeRoleStatus

Questa proprietà viene usata per indicare avvisi o errori quando si prova ad aprire o chiudere una replica o a trasferirla da un ruolo a un altro.This property is used to indicate warnings or failures when attempting to open a replica, close a replica, or transition a replica from one role to another. Per altre informazioni, vedere Ciclo di vita della replica.For more information, see Replica lifecycle. Gli errori potrebbero essere eccezioni generate dalle chiamate API o da arresti anomali del processo host servizio durante questo periodo.The failures might be exceptions thrown from the API calls or crashes of the service host process during this time. Per eventuali errori causati da chiamate API dal codice C#, Service Fabric aggiunge l'eccezione e l'analisi dello stack al report sull'integrità.For failures due to API calls from C# code, Service Fabric adds the exception and stack trace to the health report.

Questi avvisi sull'integrità vengono generati dopo un numero specificato di tentativi di eseguire l'operazione in locale (a seconda dei criteri).These health warnings are raised after retrying the action locally some number of times (depending on policy). Service Fabric esegue un nuovo tentativo di azione fino alla soglia massima.Service Fabric retries the action up to a maximum threshold. Dopo che è stata raggiunta la soglia massima, potrebbe provare a eseguire operazioni per correggere la situazione.After the maxiumum threshold is reached, it might try to act to correct the situation. Questo tentativo può causare la cancellazione degli avvisi perché l'azione sul nodo non viene più eseguita.This attempt can cause these warnings to get cleared as it gives up on the action on this node. Se ad esempio l'apertura di una replica in un nodo ha esito negativo, Service Fabric genera un avviso di integrità.For example, if a replica is failing to open on a node, Service Fabric raises a health warning. Se l'apertura della replica continua ad avere esito negativo, Service Fabric esegue la correzione automatica.If the replica continues to fail to open, Service Fabric acts to self-repair. Questa azione potrebbe comportare la stessa operazione in un altro nodo.This action might involve trying the same operation on another node. L'avviso generato per la replica viene così cancellato.This causes the warning raised for this replica to be cleared.

  • SourceId: System.RASourceId: System.RA
  • Property: ReplicaOpenStatus, ReplicaCloseStatus e ReplicaChangeRoleStatus.Property: ReplicaOpenStatus, ReplicaCloseStatus, and ReplicaChangeRoleStatus.
  • Passaggi successivi: esaminare il codice del servizio o i dump di arresto anomalo del sistema per identificare il motivo per cui l'operazione ha esito negativo.Next steps: Investigate the service code or crash dumps to identify why the operation is failing.

L'esempio seguente illustra l'integrità di una replica che genera TargetInvocationException dal relativo metodo open.The following example shows the health of a replica that's throwing TargetInvocationException from its open method. La descrizione contiene il punto di guasto, IStatefulServiceReplica.Open, il tipo di eccezione TargetInvocationException e l'analisi dello stack.The description contains the point of failure, IStatefulServiceReplica.Open, the exception type TargetInvocationException, and the stack trace.

PS C:\> Get-ServiceFabricReplicaHealth -PartitionId 337cf1df-6cab-4825-99a9-7595090c0b1b -ReplicaOrInstanceId 131483509874784794


PartitionId           : 337cf1df-6cab-4825-99a9-7595090c0b1b
ReplicaId             : 131483509874784794
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.RA', Property='ReplicaOpenStatus', HealthState='Warning', 
                        ConsiderWarningAsError=false.

HealthEvents          : 
                        SourceId              : System.RA
                        Property              : ReplicaOpenStatus
                        HealthState           : Warning
                        SequenceNumber        : 131483510001453159
                        SentAt                : 8/27/2017 11:43:20 PM
                        ReceivedAt            : 8/27/2017 11:43:21 PM
                        TTL                   : Infinite
                        Description           : Replica had multiple failures during open on _Node_0 API call: IStatefulServiceReplica.Open(); Error = System.Reflection.TargetInvocationException (-2146232828)
Exception has been thrown by the target of an invocation.
   at Microsoft.ServiceFabric.Replicator.RecoveryManager.d__31.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.ServiceFabric.Replicator.LoggingReplicator.d__137.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.ServiceFabric.Replicator.DynamicStateManager.d__109.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.ServiceFabric.Replicator.TransactionalReplicator.d__79.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.ServiceFabric.Replicator.StatefulServiceReplica.d__21.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.ServiceFabric.Services.Runtime.StatefulServiceReplicaAdapter.d__0.MoveNext()

    For more information see: http://aka.ms/sfhealth
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Warning = 8/27/2017 11:43:21 PM, LastOk = 1/1/0001 12:00:00 AM                        

L'esempio seguente illustra una replica che si arresta in modo anomalo ogni volta che viene chiusa:The following example shows a replica that's constantly crashing during close:

C:>Get-ServiceFabricReplicaHealth -PartitionId dcafb6b7-9446-425c-8b90-b3fdf3859e64 -ReplicaOrInstanceId 131483565548493142


PartitionId           : dcafb6b7-9446-425c-8b90-b3fdf3859e64
ReplicaId             : 131483565548493142
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.RA', Property='ReplicaCloseStatus', HealthState='Warning', 
                        ConsiderWarningAsError=false.

HealthEvents          : 
                        SourceId              : System.RA
                        Property              : ReplicaCloseStatus
                        HealthState           : Warning
                        SequenceNumber        : 131483565611258984
                        SentAt                : 8/28/2017 1:16:01 AM
                        ReceivedAt            : 8/28/2017 1:16:03 AM
                        TTL                   : Infinite
                        Description           : Replica had multiple failures during close on _Node_1. The application 
                        host has crashed.

                        For more information see: http://aka.ms/sfhealth
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Warning = 8/28/2017 1:16:03 AM, LastOk = 1/1/0001 12:00:00 AM

RiconfigurazioneReconfiguration

Questa proprietà viene usata per indicare quando una replica in fase di riconfigurazione rileva che la riconfigurazione è in stallo o bloccata.This property is used to indicate when a replica performing a reconfiguration detects that the reconfiguration is stalled or stuck. Questo report sull'integrità può riguardare la replica il cui ruolo corrente è primario, a eccezione dei casi di riconfigurazione con scambio della replica primaria, in cui può riguardare la replica che è stata abbassata da primaria a secondaria attiva.This health report might be on the replica whose current role is primary, except in the cases of a swap primary reconfiguration, where it might be on the replica that's being demoted from primary to active secondary.

Il blocco della riconfigurazione può dipendere da uno dei motivi seguenti:The reconfiguration can be stuck for one of the following reasons:

  • Non è stata completata un'azione sulla replica locale, la stessa replica di quella che esegue la riconfigurazione.An action on the local replica, the same replica as the one performing the reconfiguration, is not completing. I report sull'integrità della replica prodotti da altri componenti, System.RAP or System.RE, potrebbero offrire in questo caso informazioni aggiuntive.In this case, investigating the health reports on this replica from other components, System.RAP or System.RE, might provide additional information.

  • Un'azione rimane in sospeso in una replica remota.An action is not completing on a remote replica. Le repliche con azioni che restano in sospeso vengono elencate nel report sull'integrità.Replicas for which actions are pending are listed in the health report. È consigliabile eseguire altre indagini in merito a queste repliche remote nei report sull'integrità.Further investigation should be done on health reports for those remote replicas. Potrebbero anche verificarsi problemi di comunicazione tra questo nodo e il nodo remoto.There might also be communication problems between this node and the remote node.

In casi rari, la riconfigurazione può bloccarsi a causa di problemi di comunicazione o di altra natura tra il nodo e il servizio Failover Manager.In rare cases, the reconfiguration can be stuck due to communication or other problems between this node and the Failover Manager service.

  • SourceId: System.RASourceId: System.RA
  • Property: Reconfiguration.Property: Reconfiguration.
  • Passaggi successivi: analizzare le repliche locali o remote in base alla descrizione nel report sull'integrità.Next steps: Investigate local or remote replicas depending on the description of the health report.

L'esempio seguente illustra un report sull'integrità in cui una riconfigurazione è bloccata nella replica locale.The following example shows a health report where a reconfiguration is stuck on the local replica. In questo esempio la causa è un servizio che non rispetta il token di annullamento.In this sample, it's due to a service not honoring the cancellation token.

PS C:\> Get-ServiceFabricReplicaHealth -PartitionId 9a0cedee-464c-4603-abbc-1cf57c4454f3 -ReplicaOrInstanceId 131483600074836703


PartitionId           : 9a0cedee-464c-4603-abbc-1cf57c4454f3
ReplicaId             : 131483600074836703
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.RA', Property='Reconfiguration', HealthState='Warning', 
                        ConsiderWarningAsError=false.

HealthEvents          : 
                        SourceId              : System.RA
                        Property              : Reconfiguration
                        HealthState           : Warning
                        SequenceNumber        : 131483600309264482
                        SentAt                : 8/28/2017 2:13:50 AM
                        ReceivedAt            : 8/28/2017 2:13:57 AM
                        TTL                   : Infinite
                        Description           : Reconfiguration is stuck. Waiting for response from the local replica

                        For more information see: http://aka.ms/sfhealth
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Warning = 8/28/2017 2:13:57 AM, LastOk = 1/1/0001 12:00:00 AM

L'esempio seguente illustra un report sull'integrità in cui una riconfigurazione è bloccata in attesa di una risposta da due repliche remote.The following example shows a health report where a reconfiguration is stuck waiting for a response from two remote replicas. In questo esempio sono presenti tre repliche nella partizione, inclusa quella primaria corrente.In this example, there are three replicas in the partition, including the current primary.

PS C:\> Get-ServiceFabricReplicaHealth -PartitionId  579d50c6-d670-4d25-af70-d706e4bc19a2 -ReplicaOrInstanceId 131483956274977415


PartitionId           : 579d50c6-d670-4d25-af70-d706e4bc19a2
ReplicaId             : 131483956274977415
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.RA', Property='Reconfiguration', HealthState='Warning', ConsiderWarningAsError=false.

HealthEvents          : 
                        SourceId              : System.RA
                        Property              : Reconfiguration
                        HealthState           : Warning
                        SequenceNumber        : 131483960376212469
                        SentAt                : 8/28/2017 12:13:57 PM
                        ReceivedAt            : 8/28/2017 12:14:07 PM
                        TTL                   : Infinite
                        Description           : Reconfiguration is stuck. Waiting for response from 2 replicas

                        Pending Replicas: 
                        P/I Down 40 131483956244554282
                        S/S Down 20 131483956274972403

                        For more information see: http://aka.ms/sfhealth
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Warning = 8/28/2017 12:07:37 PM, LastOk = 1/1/0001 12:00:00 AM

Questo report sull'integrità mostra che la riconfigurazione è bloccata in attesa di una risposta da due repliche:This health report shows that the reconfiguration is stuck waiting for a response from two replicas:

    P/I Down 40 131483956244554282
    S/S Down 20 131483956274972403

Per ogni replica vengono specificate le informazioni seguenti:For each replica the following information is given:

  • Ruolo di configurazione precedentePrevious configuration role
  • Ruolo di configurazione correnteCurrent configuration role
  • Stato della replicaReplica state
  • ID del nodoNode ID
  • ID replicaReplica ID

Per sbloccare la riconfigurazione:To unblock the reconfiguration:

  • Le repliche down devono essere ripristinate.The down replicas should be brought up.
  • Le repliche inbuild devono completare la compilazione e la transizione allo stato ready.The inbuild replicas should complete the build and transition to ready.

Chiamata API del servizio lentaSlow service API call

System.RAP e System.Replicator segnalano una condizione di avviso se una chiamata al codice del servizio utente richiede più tempo di quello configurato.System.RAP and System.Replicator report a warning if a call to the user service code takes longer than the configured time. L'avviso viene cancellato al completamento della chiamata.The warning is cleared when the call completes.

  • SourceId: System.RAP o System.ReplicatorSourceId: System.RAP or System.Replicator
  • Proprietà: nome dell'API lenta.Property: The name of the slow API. La descrizione fornisce altri dettagli sull'ora in cui l'API è rimasta in sospeso.The description provides more details about the time the API has been pending.
  • Passaggi successivi: esaminare il motivo per cui la chiamata richiede più tempo del previsto.Next steps: Investigate why the call takes longer than expected.

L'esempio seguente mostra l'evento di integrità da System.RAP per un servizio Reliable Services che non rispetta il token di annullamento in RunAsync:The following example shows the health event from System.RAP for a reliable service that's not honoring the cancellation token in RunAsync:

PS C:\> Get-ServiceFabricReplicaHealth -PartitionId 5f6060fb-096f-45e4-8c3d-c26444d8dd10 -ReplicaOrInstanceId 131483966141404693


PartitionId           : 5f6060fb-096f-45e4-8c3d-c26444d8dd10
ReplicaId             : 131483966141404693
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.RA', Property='Reconfiguration', HealthState='Warning', ConsiderWarningAsError=false.

HealthEvents          :                         
                        SourceId              : System.RAP
                        Property              : IStatefulServiceReplica.ChangeRole(S)Duration
                        HealthState           : Warning
                        SequenceNumber        : 131483966663476570
                        SentAt                : 8/28/2017 12:24:26 PM
                        ReceivedAt            : 8/28/2017 12:24:56 PM
                        TTL                   : Infinite
                        Description           : The api IStatefulServiceReplica.ChangeRole(S) on _Node_1 is stuck. Start Time (UTC): 2017-08-28 12:23:56.347.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Warning = 8/28/2017 12:24:56 PM, LastOk = 1/1/0001 12:00:00 AM

La proprietà e il testo indicano quale API è rimasta bloccata.The property and text indicate which API got stuck. I passaggi successivi da eseguire per le diverse API bloccate variano.The next steps to take for different stuck APIs is different. Qualsiasi API in IStatefulServiceReplica o IStatelessServiceInstance è in genere un bug nel codice del servizio.Any API on the IStatefulServiceReplica or IStatelessServiceInstance is usually a bug in the service code. La sezione seguente illustra come questi elementi si traducono nel modello Reliable Services:The following section describes how these translate to the Reliable Services model:

  • IStatefulServiceReplica.Open: questo avviso indica che una chiamata a CreateServiceInstanceListeners, a ICommunicationListener.OpenAsync o, se ignorato, OnOpenAsync è bloccata.IStatefulServiceReplica.Open: This warning indicates that a call to CreateServiceInstanceListeners, ICommunicationListener.OpenAsync, or if overridden, OnOpenAsync is stuck.

  • IStatefulServiceReplica.Close e IStatefulServiceReplica.Abort: il caso più comune è un servizio che non rispetta il token di annullamento passato a RunAsync.IStatefulServiceReplica.Close and IStatefulServiceReplica.Abort: The most common case is a service not honoring the cancellation token passed in to RunAsync. È anche possibile che ICommunicationListener.CloseAsync o, se ignorato, OnCloseAsync sia bloccato.It might also be that ICommunicationListener.CloseAsync, or if overridden, OnCloseAsync is stuck.

  • IStatefulServiceReplica.ChangeRole(S) e IStatefulServiceReplica.ChangeRole(N): il caso più comune è un servizio che non rispetta il token di annullamento passato a RunAsync.IStatefulServiceReplica.ChangeRole(S) and IStatefulServiceReplica.ChangeRole(N): The most common case is a service not honoring the cancellation token passed in to RunAsync.

  • IStatefulServiceReplica.ChangeRole(P): il caso più comune è rappresentato dal servizio che non ha restituito un'attività da RunAsync.IStatefulServiceReplica.ChangeRole(P): The most common case is that the service has not returned a task from RunAsync.

Altre chiamate API che possono rimanere bloccate sono presenti nell'interfaccia di IReplicator,Other API calls that can get stuck are on the IReplicator interface. ad esempio:For example:

  • IReplicator.CatchupReplicaSet: questo avviso indica una di due situazioni.IReplicator.CatchupReplicaSet: This warning indicates one of two things. Le repliche disponibili non sono sufficienti, come si può stabilire osservando lo stato delle repliche nella partizione o cercando nel report sull'integrità di System.FM eventuali riconfigurazioni bloccate,Either there are insufficient up replicas, which can be determined by looking at the replica status of the replicas in the partition or the System.FM health report for a stuck reconfiguration. oppure le repliche non riconoscono le operazioni.Or the replicas are not acknowledging operations. È possibile usare il cmdlet Get-ServiceFabricDeployedReplicaDetail di PowerShell per determinare lo stato di tutte le repliche.The PowerShell command-let Get-ServiceFabricDeployedReplicaDetail can be used to determine the progress of all the replicas. Il problema è relativo alle repliche il cui LastAppliedReplicationSequenceNumber è dietro il valore CommittedSequenceNumber della replica primaria.The problem lies with replicas whose LastAppliedReplicationSequenceNumber is behind the primary's CommittedSequenceNumber.

  • IReplicator.BuildReplica(): questo avviso indica un problema nel processo di compilazione.IReplicator.BuildReplica(): This warning indicates a problem in the build process. Per altre informazioni, vedere Ciclo di vita della replica.For more information, see Replica lifecycle. La causa del problema potrebbe essere un'errata configurazione dell'indirizzo del replicatore.It might be due to a misconfiguration of the replicator address. Per altre informazioni, vedere Configurazione di servizi Reliable Services con stato e Specificare le risorse in un manifesto del servizio.For more information, see Configure stateful Reliable Services and Specify resources in a service manifest. Potrebbe anche trattarsi di un problema del nodo remoto.It might also be a problem on the remote node.

Coda di replica pienaReplication queue full

System.Replicator segnala un avviso se la coda di replica è piena.System.Replicator reports a warning when the replication queue is full. Nel server primario la coda di replica in genere si riempie perché una o più repliche secondarie sono lente nel riconoscere le operazioni.On the primary, the replication queue usually becomes full because one or more secondary replicas are slow to acknowledge operations. Nel server secondario ciò si verifica di solito quando il servizio è lento nell'applicare le operazioni.On the secondary, this usually happens when the service is slow to apply the operations. La condizione di avviso viene cancellata quando la coda non è più piena.The warning is cleared when the queue is no longer full.

  • SourceId: System.ReplicatorSourceId: System.Replicator
  • Property: PrimaryReplicationQueueStatus o SecondaryReplicationQueueStatus, a seconda del ruolo della replica.Property: PrimaryReplicationQueueStatus or SecondaryReplicationQueueStatus, depending on the replica role.

Operazioni di Naming lenteSlow Naming operations

System.NamingService segnala lo stato di integrità per la replica primaria quando un'operazione di denominazione richiede più tempo di quanto sia accettabile.System.NamingService reports the health on its primary replica when a Naming operation takes longer than acceptable. Esempi di operazioni di Naming sono CreateServiceAsync e DeleteServiceAsync.Examples of Naming operations are CreateServiceAsync or DeleteServiceAsync. Altri metodi sono disponibili in FabricClient, ad esempio nell'ambito dei metodi di gestione dei servizi o dei metodi di gestione delle proprietà.More methods can be found under FabricClient, for example under service management methods or property management methods.

Nota

Il servizio Naming risolve i nomi del servizio in una posizione nel cluster e consente agli utenti di gestire i nomi e le proprietà del servizio.The Naming service resolves service names to a location in the cluster and enables users to manage service names and properties. È un servizio permanente partizionato di Service Fabric.It's a Service Fabric partitioned-persisted service. Una partizione rappresenta l'authority owner, contenente i metadati relativi a tutti i nomi e i servizi di Service Fabric.One of the partitions represents the Authority Owner, which contains metadata about all Service Fabric names and services. Viene eseguito il mapping dei nomi di Service Fabric a partizioni diverse, denominate name owner, e il servizio è quindi estendibile.The Service Fabric names are mapped to different partitions, called Name Owner partitions, so the service is extensible. Per altre informazioni, vedere Architettura di Service Fabric.Read more about the Naming service.

Quando un'operazione di denominazione richiede più tempo del previsto, viene contrassegnata con un report di tipo avviso nella replica primaria della partizione del servizio Naming che gestisce l'operazione.When a Naming operation takes longer than expected, the operation is flagged with a warning report on the primary replica of the Naming service partition that serves the operation. Se l'operazione viene completata, l'avviso viene cancellato.If the operation completes successfully, the warning is cleared. Se l'operazione viene completata con un errore, il report sull'integrità include i relativi dettagli.If the operation completes with an error, the health report includes details about the error.

  • SourceId: System.NamingServiceSourceId: System.NamingService
  • Property: inizia con il prefisso Duration_ e identifica l'operazione lenta e il nome di Service Fabric a cui viene applicata.Property: Starts with prefix "Duration_" and identifies the slow operation and the Service Fabric name on which the operation is applied. Se ad esempio l'operazione di creazione del servizio per il nome fabric:/MyApp/MyService richiede troppo tempo la proprietà è Duration_AOCreateService.fabric:/MyApp/MyService.For example, if create service at name fabric:/MyApp/MyService takes too long, the property is Duration_AOCreateService.fabric:/MyApp/MyService. "AO" punta al ruolo della partizione Naming per il nome e l'operazione."AO" points to the role of the Naming partition for this name and operation.
  • Passaggi successivi: controllare i motivi per cui l'operazione di denominazione non è riuscita.Next steps: Check to see why the Naming operation fails. A ogni operazione può corrispondere una causa radice diversa.Each operation can have different root causes. Il servizio di eliminazione, ad esempio, potrebbe essere bloccato.For example, the delete service might be stuck. Il servizio, ad esempio, può bloccarsi perché l'host applicazione continua ad arrestarsi in modo anomalo in un nodo a causa di un bug utente nel codice del servizio.The service could be stuck because the application host keeps crashing on a node due to a user bug in the service code.

L'esempio seguente illustra un'operazione di creazione servizio.The following example shows a create service operation. L'operazione ha richiesto un tempo superiore alla durata configurata.The operation took longer than the configured duration. "AO" riprova e invia l'attività a "NO"."AO" retries and sends work to "NO." "NO" completa l'ultima operazione con TIMEOUT."NO" completed the last operation with TIMEOUT. In questo caso, la stessa replica è primaria per entrambi i ruoli "AO" e "NO".In this case, the same replica is primary for both the "AO" and "NO" roles.

PartitionId           : 00000000-0000-0000-0000-000000001000
ReplicaId             : 131064359253133577
AggregatedHealthState : Warning
UnhealthyEvaluations  :
                        Unhealthy event: SourceId='System.NamingService', Property='Duration_AOCreateService.fabric:/MyApp/MyService', HealthState='Warning', ConsiderWarningAsError=false.

HealthEvents          :
                        SourceId              : System.RA
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 131064359308715535
                        SentAt                : 4/29/2016 8:38:50 PM
                        ReceivedAt            : 4/29/2016 8:39:08 PM
                        TTL                   : Infinite
                        Description           : Replica has been created.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 4/29/2016 8:39:08 PM, LastWarning = 1/1/0001 12:00:00 AM

                        SourceId              : System.NamingService
                        Property              : Duration_AOCreateService.fabric:/MyApp/MyService
                        HealthState           : Warning
                        SequenceNumber        : 131064359526778775
                        SentAt                : 4/29/2016 8:39:12 PM
                        ReceivedAt            : 4/29/2016 8:39:38 PM
                        TTL                   : 00:05:00
                        Description           : The AOCreateService started at 2016-04-29 20:39:08.677 is taking longer than 30.000.
                        RemoveWhenExpired     : True
                        IsExpired             : False
                        Transitions           : Error->Warning = 4/29/2016 8:39:38 PM, LastOk = 1/1/0001 12:00:00 AM

                        SourceId              : System.NamingService
                        Property              : Duration_NOCreateService.fabric:/MyApp/MyService
                        HealthState           : Warning
                        SequenceNumber        : 131064360657607311
                        SentAt                : 4/29/2016 8:41:05 PM
                        ReceivedAt            : 4/29/2016 8:41:08 PM
                        TTL                   : 00:00:15
                        Description           : The NOCreateService started at 2016-04-29 20:39:08.689 completed with FABRIC_E_TIMEOUT in more than 30.000.
                        RemoveWhenExpired     : True
                        IsExpired             : False
                        Transitions           : Error->Warning = 4/29/2016 8:39:38 PM, LastOk = 1/1/0001 12:00:00 AM

Report sull'integrità del sistema DeployedApplicationDeployedApplication system health reports

System.Hosting è l'autorità per le entità distribuite.System.Hosting is the authority on deployed entities.

ActivationActivation

System.Hosting restituisce OK quando un'applicazione viene attivata correttamente nel nodo.System.Hosting reports as OK when an application has been successfully activated on the node. In caso contrario, restituisce un errore.Otherwise, it reports an error.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: Activation, inclusa la versione di implementazione.Property: Activation, including the rollout version.
  • Passaggi successivi: se l'applicazione non è integra, provare ad analizzare i motivi per cui l'attivazione non è riuscita.Next steps: If the application is unhealthy, investigate why the activation failed.

L'esempio seguente illustra un'attivazione riuscita:The following example shows a successful activation:

PS C:\> Get-ServiceFabricDeployedApplicationHealth -NodeName _Node_1 -ApplicationName fabric:/WordCount -ExcludeHealthStatistics

ApplicationName                    : fabric:/WordCount
NodeName                           : _Node_1
AggregatedHealthState              : Ok
DeployedServicePackageHealthStates : 
                                     ServiceManifestName   : WordCountServicePkg
                                     ServicePackageActivationId : 
                                     NodeName              : _Node_1
                                     AggregatedHealthState : Ok

HealthEvents                       : 
                                     SourceId              : System.Hosting
                                     Property              : Activation
                                     HealthState           : Ok
                                     SequenceNumber        : 131445249083836329
                                     SentAt                : 7/14/2017 4:55:08 PM
                                     ReceivedAt            : 7/14/2017 4:55:14 PM
                                     TTL                   : Infinite
                                     Description           : The application was activated successfully.
                                     RemoveWhenExpired     : False
                                     IsExpired             : False
                                     Transitions           : Error->Ok = 7/14/2017 4:55:14 PM, LastWarning = 1/1/0001 12:00:00 AM

ScaricareDownload

System.Hosting segnala un errore se il download del pacchetto dell'applicazione non è riuscito.System.Hosting reports an error if the application package download fails.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: Download:VersioneImplementazione.Property: Download:RolloutVersion.
  • Passaggi successivi: ricercare la causa del download non riuscito nel nodo.Next steps: Investigate why the download failed on the node.

Report sull'integrità del sistema DeployedServicePackageDeployedServicePackage system health reports

System.Hosting è l'autorità per le entità distribuite.System.Hosting is the authority on deployed entities.

Attivazione del pacchetto di serviziService package activation

System.Hosting restituisce OK se l'attivazione del pacchetto di servizi nel nodo è riuscita.System.Hosting reports as OK if the service package activation on the node is successful. In caso contrario, restituisce un errore.Otherwise, it reports an error.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: Activation.Property: Activation.
  • Passaggi successivi: analizzare i motivi per cui l'attivazione non è riuscita.Next steps: Investigate why the activation failed.

Attivazione del pacchetto di codiceCode package activation

System.Hosting restituisce OK per ogni pacchetto di codice se l'attivazione è riuscita.System.Hosting reports as OK for each code package if the activation is successful. In caso contrario, restituisce l'avviso configurato.If the activation fails, it reports a warning as configured. Se l'attivazione di CodePackage non riesce o termina con un errore superiore alla soglia configurata per CodePackageHealthErrorThreshold, viene restituito un errore.If CodePackage fails to activate or terminates with an error greater than the configured CodePackageHealthErrorThreshold, hosting reports an error. Se un pacchetto servizio contiene più pacchetti di codice, viene generato un report sull'attivazione per ognuno.If a service package contains multiple code packages, an activation report is generated for each one.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: usa il prefisso CodePackageActivation e contiene il nome del pacchetto di codice e il punto di ingresso come CodePackageActivation:CodePackageName:SetupEntryPoint/EntryPoint.Property: Uses the prefix CodePackageActivation and contains the name of the code package and the entry point as CodePackageActivation:CodePackageName:SetupEntryPoint/EntryPoint. Ad esempio, CodePackageActivation:Code:SetupEntryPoint.For example, CodePackageActivation:Code:SetupEntryPoint.

Registrazione del tipo di servizioService type registration

System.Hosting restituisce OK se il tipo di servizio è stato registrato correttamente.System.Hosting reports as OK if the service type has been registered successfully. Viene restituito un errore se la registrazione non è stata eseguita in tempo, in base alla configurazione eseguita usando ServiceTypeRegistrationTimeout.It reports an error if the registration wasn't done in time, as configured by using ServiceTypeRegistrationTimeout. In caso di chiusura del runtime, viene annullata la registrazione del tipo di servizio nel nodo e viene segnalato un avviso.If the runtime is closed, the service type is unregistered from the node and hosting reports a warning.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: usa il prefisso ServiceTypeRegistration e contiene il nome del tipo di servizio.Property: Uses the prefix ServiceTypeRegistration and contains the service type name. Ad esempio, ServiceTypeRegistration:FileStoreServiceType.For example, ServiceTypeRegistration:FileStoreServiceType.

L'esempio seguente illustra un pacchetto servizio distribuito integro:The following example shows a healthy deployed service package:

PS C:\> Get-ServiceFabricDeployedServicePackageHealth -NodeName _Node_1 -ApplicationName fabric:/WordCount -ServiceManifestName WordCountServicePkg


ApplicationName            : fabric:/WordCount
ServiceManifestName        : WordCountServicePkg
ServicePackageActivationId : 
NodeName                   : _Node_1
AggregatedHealthState      : Ok
HealthEvents               : 
                             SourceId              : System.Hosting
                             Property              : Activation
                             HealthState           : Ok
                             SequenceNumber        : 131445249084026346
                             SentAt                : 7/14/2017 4:55:08 PM
                             ReceivedAt            : 7/14/2017 4:55:14 PM
                             TTL                   : Infinite
                             Description           : The ServicePackage was activated successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/14/2017 4:55:14 PM, LastWarning = 1/1/0001 12:00:00 AM

                             SourceId              : System.Hosting
                             Property              : CodePackageActivation:Code:EntryPoint
                             HealthState           : Ok
                             SequenceNumber        : 131445249084306362
                             SentAt                : 7/14/2017 4:55:08 PM
                             ReceivedAt            : 7/14/2017 4:55:14 PM
                             TTL                   : Infinite
                             Description           : The CodePackage was activated successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/14/2017 4:55:14 PM, LastWarning = 1/1/0001 12:00:00 AM

                             SourceId              : System.Hosting
                             Property              : ServiceTypeRegistration:WordCountServiceType
                             HealthState           : Ok
                             SequenceNumber        : 131445249088096842
                             SentAt                : 7/14/2017 4:55:08 PM
                             ReceivedAt            : 7/14/2017 4:55:14 PM
                             TTL                   : Infinite
                             Description           : The ServiceType was registered successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/14/2017 4:55:14 PM, LastWarning = 1/1/0001 12:00:00 AM

ScaricareDownload

System.Hosting segnala un errore se il download del pacchetto servizio non è riuscito.System.Hosting reports an error if the service package download fails.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: Download:VersioneImplementazione.Property: Download:RolloutVersion.
  • Passaggi successivi: ricercare la causa del download non riuscito nel nodo.Next steps: Investigate why the download failed on the node.

Convalida dell’aggiornamentoUpgrade validation

System.Hosting segnala un errore se la convalida durante l'aggiornamento non è riuscita oppure se non è riuscito l'aggiornamento nel nodo.System.Hosting reports an error if validation during the upgrade fails or if the upgrade fails on the node.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: usa il prefisso FabricUpgradeValidation e contiene la versione dell'aggiornamento.Property: Uses the prefix FabricUpgradeValidation and contains the upgrade version.
  • Description: punta all'errore che si è verificato.Description: Points to the error encountered.

Capacità del nodo indefinita per la metrica di governance delle risorseUndefined node capacity for resource governance metrics

System.Hosting genera un avviso se le capacità del nodo non sono definite nel manifesto del cluster e la configurazione per il rilevamento automatico è disattivata.System.Hosting reports a warning if node capacities are not defined in the cluster manifest and config for automatic detection is turned off. Service Fabric genererà un avviso di integrità ogni volta che il pacchetto del servizio che usa la governance delle risorse si registra in un nodo specificato.Service Fabric will raise health warning whenever service package that uses resource governance registers on a specified node.

  • SourceId: System.HostingSourceId: System.Hosting
  • Property: ResourceGovernanceProperty: ResourceGovernance
  • Passaggi successivi: il modo preferibile per evitare questo problema consiste nel modificare il manifesto del cluster per abilitare il rilevamento automatico delle risorse disponibili.Next steps: The preferred way to overcome this problem is to change the cluster manifest to enable automatic detection of available resources. Un altro modo consiste nell'aggiornare il manifesto del cluster specificando le capacità del nodo corrette per queste metriche.Another way is updating the cluster manifest with correctly specified node capacities for these metrics.

Passaggi successiviNext steps

Come visualizzare i report sull'integrità di Service FabricView Service Fabric health reports

Creare report e verificare l'integrità dei serviziHow to report and check service health

Monitorare e diagnosticare servizi in localeMonitor and diagnose services locally

Aggiornamento di un'applicazione di infrastruttura di serviziService Fabric application upgrade