Używanie raportów kondycji systemu do rozwiązywania problemów

Składniki usługi Azure Service Fabric udostępniają raporty kondycji systemu dla wszystkich jednostek w klastrze bezpośrednio w tym miejscu. Magazyn kondycji tworzy i usuwa jednostki na podstawie raportów systemowych. Organizuje je również w hierarchii, która przechwytuje interakcje jednostek.

Uwaga

Aby zrozumieć pojęcia związane z kondycją, przeczytaj więcej na temat modelu kondycji usługi Service Fabric.

Raporty kondycji systemu zapewniają wgląd w funkcje klastra i aplikacji oraz flagi problemów. W przypadku aplikacji i usług raporty kondycji systemu sprawdzają, czy jednostki są implementowane i działają prawidłowo z perspektywy usługi Service Fabric. Raporty nie zapewniają monitorowania kondycji logiki biznesowej usługi ani wykrywania procesów, które nie odpowiadają. Usługi użytkowników mogą wzbogacić dane kondycji o informacje specyficzne dla ich logiki.

Uwaga

Raporty o kondycji wysyłane przez strażników użytkowników są widoczne tylko po utworzeniu jednostki przez składniki systemowe. Po usunięciu jednostki magazyn kondycji automatycznie usuwa wszystkie skojarzone z nią raporty o kondycji. To samo dotyczy utworzenia nowego wystąpienia jednostki. Przykładem jest utworzenie nowego stanowego wystąpienia repliki usługi utrwalonej. Wszystkie raporty skojarzone ze starym wystąpieniem są usuwane i czyszczone ze sklepu.

Raporty składników systemu są identyfikowane przez źródło, które rozpoczyna się od prefiksu "System". Watchdogs nie mogą używać tego samego prefiksu dla swoich źródeł, ponieważ raporty z nieprawidłowymi parametrami są odrzucane.

Przyjrzyjmy się niektórym raportom systemowym, aby zrozumieć, co je wyzwala, i dowiedzieć się, jak rozwiązać potencjalne problemy, które reprezentują.

Uwaga

Usługa Service Fabric nadal dodaje raporty dotyczące warunków zainteresowania, które zwiększają widoczność tego, co dzieje się w klastrze i aplikacjach. Istniejące raporty można ulepszyć, aby ułatwić szybsze rozwiązywanie problemu.

Raporty kondycji systemu klastra

Jednostka kondycji klastra jest tworzona automatycznie w magazynie kondycji. Jeśli wszystko działa prawidłowo, nie ma raportu systemowego.

Strata w sąsiedztwie

System.Federation zgłasza błąd podczas wykrywania utraty sąsiedztwa. Raport pochodzi z poszczególnych węzłów, a identyfikator węzła jest uwzględniony w nazwie właściwości. Jeśli jedna dzielnica zostanie utracona w całym pierścieniu usługi Service Fabric, zazwyczaj można oczekiwać dwóch zdarzeń reprezentujących obie strony raportu o lukach. Jeśli więcej dzielnic jest utraconych, istnieje więcej zdarzeń.

Raport określa limit czasu dzierżawy globalnej jako limit czasu wygaśnięcia (TTL). Raport jest ponownie zgłaszany co połowę czasu trwania czasu wygaśnięcia tak długo, jak warunek pozostaje aktywny. Zdarzenie zostanie automatycznie usunięte po wygaśnięciu. Zachowanie usuwania po wygaśnięciu gwarantuje, że raport jest prawidłowo czyszczony z magazynu kondycji, nawet jeśli węzeł raportowania nie działa.

  • SourceId: System.Federation
  • Właściwość: rozpoczyna się od sąsiedztwa i zawiera informacje o węźle.
  • Następne kroki: Zbadaj, dlaczego dzielnica zostanie utracona. Na przykład sprawdź komunikację między węzłami klastra.

Ponowne kompilowanie

Usługa Menedżera trybu failover (FM) zarządza informacjami o węzłach klastra. Gdy fm traci dane i przechodzi do utraty danych, nie może zagwarantować, że zawiera on najbardziej zaktualizowane informacje o węzłach klastra. W takim przypadku system przechodzi przez ponowne kompilowanie, a System.FM zbiera dane ze wszystkich węzłów w klastrze w celu ponownego skompilowania stanu. Czasami z powodu problemów z siecią lub węzłem ponowne kompilowanie może zostać zablokowane lub zatrzymane. To samo może się zdarzyć w przypadku usługi Master (FMM) Menedżera trybu failover. FmM to bezstanowa usługa systemowa, która śledzi, gdzie znajdują się wszystkie maszyny wirtualne w klastrze. Podstawowy moduł FMM jest zawsze węzłem o identyfikatorze zbliżonym do 0. Jeśli ten węzeł zostanie porzucony, zostanie wyzwolona ponowna kompilacja. Gdy wystąpi jeden z poprzednich warunków, System.FM lub System.FMM flaguje go za pośrednictwem raportu o błędach. Ponowne kompilowanie może być zablokowane w jednej z dwóch faz:

  • Oczekiwanie na emisję: FM/FMM czeka na odpowiedź komunikatu emisji z innych węzłów.

    • Następne kroki: Sprawdź, czy występuje problem z połączeniem sieciowym między węzłami.
  • Oczekiwanie na węzły: FM/FMM otrzymał już odpowiedź emisji z innych węzłów i oczekuje na odpowiedź z określonych węzłów. Raport kondycji zawiera listę węzłów, dla których fm/FMM oczekuje na odpowiedź.

    • Następne kroki: Zbadaj połączenie sieciowe między węzłami FM/FMM i wymienionymi węzłami. Zbadaj każdy wymieniony węzeł, aby uzyskać inne możliwe problemy.
  • SourceID: System.FM lub System.FMM

  • Właściwość: Ponowne kompilowanie.

  • Następne kroki: Zbadaj połączenie sieciowe między węzłami, a także stan wszystkich określonych węzłów wymienionych w opisie raportu kondycji.

Stan węzła początkowego

System.FM zgłasza ostrzeżenie dotyczące poziomu klastra, jeśli niektóre węzły początkowe są w złej kondycji. Węzły początkowe to węzły, które utrzymują dostępność bazowego klastra. Te węzły pomagają zapewnić, że klaster pozostaje w stanie, ustanawiając dzierżawy z innymi węzłami i służąc jako tiebreakery podczas niektórych rodzajów awarii sieci. Jeśli większość węzłów inicjuje się w klastrze i nie zostanie przywrócona, klaster zostanie automatycznie zamknięty.

Węzeł inicjuje się w złej kondycji, jeśli jego stan węzła jest wyłączony, usunięty lub nieznany. Raport ostrzegawczy dotyczący stanu węzła inicjuje listę wszystkich węzłów inicjów w złej kondycji z szczegółowymi informacjami.

  • Identyfikator źródła: System.FM
  • Właściwość: SeedNodeStatus
  • Następne kroki: Jeśli to ostrzeżenie jest wyświetlane w klastrze, postępuj zgodnie z poniższymi instrukcjami, aby rozwiązać ten problem: W przypadku klastra usługi Service Fabric w wersji 6.5 lub nowszej: w przypadku klastra usługi Service Fabric na platformie Azure po wyłączeniu węzła początkowego usługa Service Fabric spróbuje ją automatycznie zmienić na węzeł inny niż inicjuje. Aby to zrobić, upewnij się, że liczba węzłów innych niż inicjuje w typie węzła podstawowego jest większa lub równa liczbie węzłów podrzędnych w dół. W razie potrzeby dodaj więcej węzłów do typu węzła podstawowego, aby to osiągnąć. W zależności od stanu klastra rozwiązanie problemu może zająć trochę czasu. Po wykonaniu tej czynności raport ostrzegawczy zostanie automatycznie wyczyszczone.

W przypadku klastra autonomicznego usługi Service Fabric, aby wyczyścić raport ostrzegawczy, wszystkie węzły początkowe muszą stać się w dobrej kondycji. W zależności od tego, dlaczego węzły inicjujące są w złej kondycji, należy wykonać różne akcje: jeśli węzeł inicjujący jest wyłączony, użytkownicy muszą przenieść ten węzeł inicjujący w górę; jeśli węzeł inicjowany jest usunięty lub nieznany, ten węzeł inicjowania musi zostać usunięty z klastra. Raport ostrzegawczy jest automatycznie czyszczone, gdy wszystkie węzły początkowe staną się w dobrej kondycji.

W przypadku klastra z uruchomioną wersją usługi Service Fabric starszej niż 6.5: w tym przypadku raport ostrzegawczy musi zostać wyczyszczone ręcznie. Użytkownicy powinni upewnić się, że wszystkie węzły inicjujące stają się w dobrej kondycji przed wyczyszczeniem raportu: jeśli węzeł inicjujący jest wyłączony, użytkownicy muszą przenieść ten węzeł inicjujący do góry;jeśli węzeł inicjujący zostanie usunięty z klastra. Gdy wszystkie węzły początkowe staną się w dobrej kondycji, użyj następującego polecenia z programu PowerShell, aby wyczyścić raport ostrzegawczy:

PS C:\> Send-ServiceFabricClusterHealthReport -SourceId "System.FM" -HealthProperty "SeedNodeStatus" -HealthState OK

Raporty kondycji systemu węzła

System.FM, który reprezentuje usługę Menedżera trybu failover, to urząd zarządzający informacjami o węzłach klastra. Każdy węzeł powinien mieć jeden raport z System.FM pokazujący jego stan. Jednostki węzła są usuwane po usunięciu stanu węzła. Aby uzyskać więcej informacji, zobacz RemoveNodeStateAsync.

Węzeł w górę/w dół

System.FM raportów jako OK, gdy węzeł dołącza do pierścienia (jest uruchomiony). Zgłasza błąd, gdy węzeł odchodzi z pierścienia (jest on wyłączony do uaktualniania lub po prostu z powodu niepowodzenia). Hierarchia kondycji utworzona przez magazyn kondycji działa na wdrożonych jednostkach w korelacji z raportami węzłów System.FM. Uwzględnia węzeł wirtualny nadrzędny wszystkich wdrożonych jednostek. Wdrożone jednostki w tym węźle są uwidaczniane za pośrednictwem zapytań, jeśli węzeł jest zgłaszany jako w górę przez System.FM, z tym samym wystąpieniem co wystąpienie skojarzone z jednostkami. Gdy System.FM zgłasza, że węzeł jest wyłączony lub ponownie uruchomiony, jako nowe wystąpienie magazyn kondycji automatycznie czyści wdrożone jednostki, które mogą istnieć tylko w węźle w dół lub w poprzednim wystąpieniu węzła.

  • SourceId: System.FM
  • Właściwość: Stan.
  • Następne kroki: jeśli węzeł nie działa w celu uaktualnienia, powinien zostać przywrócony po uaktualnieniu. W takim przypadku stan kondycji powinien powrócić do pozycji OK. Jeśli węzeł nie wróci lub ulegnie awarii, problem wymaga większego badania.

W poniższym przykładzie przedstawiono zdarzenie System.FM ze stanem kondycji ok dla węzła w górę:

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

Wygaśnięcie certyfikatu

System.FabricNode zgłasza ostrzeżenie, gdy certyfikaty używane przez węzeł zbliżają się do wygaśnięcia. Istnieją trzy certyfikaty na węzeł: Certificate_cluster, Certificate_server i Certificate_default_client. Gdy wygaśnięcie wynosi co najmniej dwa tygodnie, stan kondycji raportu ma wartość OK. Po upływie dwóch tygodni typ raportu jest ostrzeżeniem. Czas wygaśnięcia tych zdarzeń jest nieskończony i są usuwane po opuszczeniu klastra przez węzeł.

  • SourceId: System.FabricNode
  • Właściwość: rozpoczyna się od certyfikatu i zawiera więcej informacji o typie certyfikatu.
  • Następne kroki: zaktualizuj certyfikaty, jeśli zbliżają się do wygaśnięcia.

Naruszenie pojemności obciążenia

Usługa Service Fabric Load Balancer zgłasza ostrzeżenie, gdy wykryje naruszenie pojemności węzła.

  • SourceId: System.PLB
  • Właściwość: rozpoczyna się od pojemności.
  • Następne kroki: Sprawdź podane metryki i wyświetl bieżącą pojemność w węźle.

Niezgodność pojemności węzła dla metryk ładu zasobów

System.Hosting zgłasza ostrzeżenie, jeśli zdefiniowane pojemności węzłów w manifeście klastra są większe niż rzeczywiste pojemności węzłów dla metryk ładu zasobów (pamięci i rdzeni procesora CPU). Raport kondycji jest wyświetlany, gdy pierwszy pakiet usługi, który korzysta z rejestrów ładu zasobów w określonym węźle.

  • SourceId: System.Hosting
  • Właściwość: Zarządzanie zasobami.
  • Następne kroki: Ten problem może być problemem, ponieważ zarządzanie pakietami usług nie jest wymuszane zgodnie z oczekiwaniami, a zarządzanie zasobami nie działa prawidłowo. Zaktualizuj manifest klastra przy użyciu prawidłowych pojemności węzłów dla tych metryk lub nie określaj ich i pozwól usłudze Service Fabric automatycznie wykrywać dostępne zasoby.

Raporty kondycji systemu aplikacji

System.CM, który reprezentuje usługę Menedżer klastra, jest urzędem zarządzającym informacjami o aplikacji.

Stan

System.CM raporty jako OK, gdy aplikacja została utworzona lub zaktualizowana. Informuje magazyn kondycji, gdy aplikacja zostanie usunięta, aby można było ją usunąć ze sklepu.

  • SourceId: System.CM
  • Właściwość: Stan.
  • Następne kroki: jeśli aplikacja została utworzona lub zaktualizowana, powinna zawierać raport kondycji Menedżera klastra. W przeciwnym razie sprawdź stan aplikacji, wysyłając zapytanie. Na przykład użyj polecenia cmdlet programu PowerShell Get-ServiceFabricApplication -ApplicationName applicationName.

W poniższym przykładzie pokazano zdarzenie stanu w aplikacji fabric:/WordCount :

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

Raporty kondycji systemu usług

System.FM, który reprezentuje usługę Menedżera trybu failover, jest urzędem zarządzającym informacjami o usługach.

Stan

System.FM raportów jako OK po utworzeniu usługi. Usuwa jednostkę z magazynu kondycji po usunięciu usługi.

  • SourceId: System.FM
  • Właściwość: Stan.

W poniższym przykładzie pokazano zdarzenie stanu w usłudze 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

Błąd korelacji usługi

System.PLB zgłasza błąd podczas wykrywania, że aktualizacja usługi jest skorelowana z inną usługą, która tworzy łańcuch koligacji. Raport zostanie wyczyszczone po pomyślnej aktualizacji.

  • SourceId: System.PLB
  • Właściwość: ServiceDescription.
  • Następne kroki: Sprawdź skorelowane opisy usług.

Partycjonowanie raportów o kondycji systemu

System.FM, który reprezentuje usługę Menedżera trybu failover, jest urzędem zarządzającym informacjami o partycjach usługi.

Stan

System.FM raporty jako OK, gdy partycja została utworzona i jest w dobrej kondycji. Usuwa jednostkę z magazynu kondycji po usunięciu partycji.

Jeśli partycja jest poniżej minimalnej liczby replik, zgłasza błąd. Jeśli partycja nie jest niższa od minimalnej liczby replik, ale jest poniżej docelowej liczby replik, zgłasza ostrzeżenie. Jeśli partycja jest w stanie utraty kworum, System.FM zgłasza błąd.

Inne istotne zdarzenia obejmują ostrzeżenie, gdy ponowna konfiguracja trwa dłużej niż oczekiwano, a kompilacja trwa dłużej niż oczekiwano. Oczekiwane czasy kompilacji i ponownej konfiguracji można konfigurować na podstawie scenariuszy usługi. Jeśli na przykład usługa ma terabajt stanu, taki jak Azure SQL Database, kompilacja trwa dłużej niż w przypadku usługi o niewielkiej ilości stanu.

  • SourceId: System.FM
  • Właściwość: Stan.
  • Następne kroki: jeśli stan kondycji nie jest prawidłowy, możliwe, że niektóre repliki nie zostały utworzone, otwarte lub podniesione do podstawowej lub pomocniczej poprawnie.

Jeśli opis opisuje utratę kworum, badanie szczegółowego raportu kondycji replik, które nie działają, i przywrócenie ich kopii zapasowej pomaga przywrócić partycję do trybu online.

Jeśli opis opisuje partycję zablokowaną w rekonfiguracji, raport kondycji repliki podstawowej zawiera dodatkowe informacje.

W przypadku innych raportów dotyczących kondycji System.FM istnieją raporty dotyczące replik lub partycji lub usługi z innych składników systemu.

W poniższych przykładach opisano niektóre z tych raportów.

W poniższym przykładzie przedstawiono partycję w dobrej kondycji:

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

W poniższym przykładzie pokazano kondycję partycji poniżej docelowej liczby replik. Następnym krokiem jest pobranie opisu partycji, który pokazuje, jak jest skonfigurowany: MinReplicaSetSize to trzy, a targetReplicaSetSize to siedem. Następnie uzyskaj liczbę węzłów w klastrze, co w tym przypadku wynosi pięć. W takim przypadku nie można umieścić dwóch replik, ponieważ docelowa liczba replik jest większa niż liczba dostępnych węzłów.

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

W poniższym przykładzie pokazano kondycję partycji, która utknęła w rekonfiguracji, ponieważ użytkownik nie honoruje tokenu anulowania w metodzie RunAsync . Badanie raportu kondycji dowolnej repliki oznaczonej jako podstawowa (P) może pomóc w dalszym przechodzeniu do szczegółów problemu.

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: https://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

Ten raport kondycji przedstawia stan replik partycji poddawanych rekonfiguracji:

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

Dla każdej repliki raport kondycji zawiera:

  • Poprzednia rola konfiguracji
  • Bieżąca rola konfiguracji
  • Stan repliki
  • Węzeł, na którym jest uruchomiona replika
  • Identyfikator repliki

W przypadku, tak jak w przykładzie, potrzebne jest dalsze badanie. Zbadaj kondycję każdej pojedynczej repliki, zaczynając od replik oznaczonych jako Primary i Secondary (131482789658160654 i 131482789688598467) w poprzednim przykładzie.

Naruszenie ograniczeń repliki

System.PLB zgłasza ostrzeżenie, jeśli wykryje naruszenie ograniczenia repliki i nie może umieścić wszystkich replik partycji. Szczegóły raportu pokazują, które ograniczenia i właściwości uniemożliwiają umieszczenie repliki.

  • SourceId: System.PLB
  • Właściwość: rozpoczyna się od replicaConstraintViolation.

Raporty o kondycji systemu repliki

System.RA, który reprezentuje składnik agenta rekonfiguracji, jest urzędem stanu repliki.

Stan

System.RA zgłasza błąd OK po utworzeniu repliki.

  • SourceId: System.RA
  • Właściwość: Stan.

W poniższym przykładzie przedstawiono replikę w dobrej kondycji:

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, ReplicaChangeRoleStatus

Ta właściwość służy do wskazywania ostrzeżeń lub niepowodzeń podczas próby otwarcia repliki, zamknięcia repliki lub przeniesienia repliki z jednej roli do innej. Aby uzyskać więcej informacji, zobacz Cykl życia repliki. Błędy mogą być wyjątkami zgłaszanych przez wywołania interfejsu API lub awariami procesu hosta usługi w tym czasie. W przypadku niepowodzeń spowodowanych wywołaniami interfejsu API z kodu języka C# usługa Service Fabric dodaje do raportu kondycji wyjątek i ślad stosu.

Te ostrzeżenia dotyczące kondycji są wywoływane po ponowieniu próby wykonania akcji lokalnie kilka razy (w zależności od zasad). Usługa Service Fabric ponawia próbę wykonania akcji do maksymalnego progu. Po osiągnięciu maksymalnego progu może on próbować rozwiązać tę sytuację. Ta próba może spowodować wyczyszczenie tych ostrzeżeń, ponieważ zrezygnowało z akcji w tym węźle. Jeśli na przykład replika nie zostanie otwarta w węźle, usługa Service Fabric zgłosi ostrzeżenie o kondycji. Jeśli replika nadal nie może się otworzyć, usługa Service Fabric działa w celu samodzielnej naprawy. Ta akcja może obejmować wypróbowanie tej samej operacji w innym węźle. Ta próba powoduje wyczyszczenie ostrzeżenia dla tej repliki.

  • SourceId: System.RA
  • Właściwość: ReplicaOpenStatus, ReplicaCloseStatus i ReplicaChangeRoleStatus.
  • Następne kroki: Zbadaj kod usługi lub zrzuty awaryjne, aby ustalić, dlaczego operacja kończy się niepowodzeniem.

W poniższym przykładzie pokazano kondycję repliki, która jest zgłaszana TargetInvocationException z otwartej metody. Opis zawiera punkt awarii IStatefulServiceReplica.Open, typ wyjątku TargetInvocationException i ślad stosu.

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: https://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

W poniższym przykładzie przedstawiono replikę, która stale ulega awarii podczas zamykania:

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: https://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

Ponowne konfigurowanie

Ta właściwość służy do wskazywania, kiedy replika wykonująca ponowną konfigurację wykryje, że ponowna konfiguracja jest zablokowana lub zablokowana. Ten raport kondycji może znajdować się w replice, której bieżąca rola jest podstawowa, z wyjątkiem przypadków rekonfiguracji podstawowej zamiany, gdzie może znajdować się na repliki, która jest zdegradowana z podstawowej do aktywnej pomocniczej.

Ponowna konfiguracja może być zablokowana z jednego z następujących powodów:

  • Akcja repliki lokalnej, tej samej repliki co ta, która wykonuje ponowną konfigurację, nie kończy się. W takim przypadku badanie raportów kondycji na tej repliki z innych składników, System.RAP lub System.RE, może dostarczyć dodatkowe informacje.

  • Akcja nie jest wykonywana w repliki zdalnej. Repliki, dla których akcje oczekują, są wymienione w raporcie kondycji. Należy przeprowadzić dalsze badanie dotyczące raportów kondycji dla tych replik zdalnych. Mogą również występować problemy z komunikacją między tym węzłem a węzłem zdalnym.

W rzadkich przypadkach ponowna konfiguracja może być zablokowana z powodu komunikacji lub innych problemów między tym węzłem a usługą Menedżera trybu failover.

  • SourceId: System.RA
  • Właściwość: Ponowna konfiguracja.
  • Następne kroki: Zbadaj repliki lokalne lub zdalne w zależności od opisu raportu kondycji.

W poniższym przykładzie przedstawiono raport kondycji, w którym ponowna konfiguracja jest zablokowana w replice lokalnej. W tym przykładzie jest to spowodowane tym, że usługa nie honoruje tokenu anulowania.

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: https://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

W poniższym przykładzie przedstawiono raport kondycji, w którym ponowna konfiguracja jest zablokowana w oczekiwaniu na odpowiedź z dwóch replik zdalnych. W tym przykładzie w partycji znajdują się trzy repliki, w tym bieżąca podstawowa.

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: https://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

Ten raport kondycji pokazuje, że ponowna konfiguracja jest zablokowana w oczekiwaniu na odpowiedź z dwóch replik:

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

Dla każdej repliki podane są następujące informacje:

  • Poprzednia rola konfiguracji
  • Bieżąca rola konfiguracji
  • Stan repliki
  • Identyfikator węzła
  • Identyfikator repliki

Aby odblokować ponowną konfigurację:

  • Repliki w dół powinny być wychowany.
  • Repliki inbuild powinny zakończyć kompilację i przejść do gotowości.

Powolne wywołanie interfejsu API usługi

System.RAP i System.Replicator zgłaszają ostrzeżenie, jeśli wywołanie kodu usługi użytkownika trwa dłużej niż skonfigurowany czas. Ostrzeżenie jest czyszczone po zakończeniu wywołania.

  • SourceId: System.RAP lub System.Replicator
  • Właściwość: nazwa powolnego interfejsu API. Opis zawiera więcej szczegółów na temat czasu oczekiwania interfejsu API.
  • Następne kroki: Sprawdź, dlaczego wywołanie trwa dłużej niż oczekiwano.

W poniższym przykładzie pokazano zdarzenie kondycji z system.RAP dla niezawodnej usługi, która nie honoruje tokenu anulowania w narzędziu 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

Właściwość i tekst wskazują, który interfejs API został zablokowany. Następne kroki, które należy wykonać dla różnych zablokowanych interfejsów API, różnią się. Każdy interfejs API w kodzie usługi IStatefulServiceReplica lub IStatelessServiceInstance jest zwykle usterką. W poniższej sekcji opisano sposób tłumaczenia na model usług Reliable Services:

  • IStatefulServiceReplica.Open: to ostrzeżenie wskazuje, że wywołanie metody CreateServiceInstanceListeners, ICommunicationListener.OpenAsynclub w przypadku przesłonięcia OnOpenAsync jest zablokowane.

  • IStatefulServiceReplica.Close i IStatefulServiceReplica.Abort: Najczęstszym przypadkiem jest usługa, która nie honoruje tokenu anulowania przekazanego do RunAsync. Może to być również, że ICommunicationListener.CloseAsync, lub jeśli przesłonięć, OnCloseAsync jest zablokowany.

  • IStatefulServiceReplica.ChangeRole(S) i IStatefulServiceReplica.ChangeRole(N): Najczęściej zdarza się, że usługa nie honoruje tokenu anulowania przekazanego do RunAsync. W tym scenariuszu najlepszym rozwiązaniem jest ponowne uruchomienie repliki.

  • IStatefulServiceReplica.ChangeRole(P): Najczęstszym przypadkiem jest to, że usługa nie zwróciła zadania z RunAsync.

Inne wywołania interfejsu API, które mogą zostać zablokowane, znajdują się w interfejsie IReplicator . Przykład:

  • IReplicator.CatchupReplicaSet: to ostrzeżenie wskazuje jedną z dwóch rzeczy. Nie ma wystarczających replik. Aby sprawdzić, czy tak jest, zapoznaj się ze stanem replik repliki w partycji lub raportem kondycji System.FM o zablokowanej rekonfiguracji. Lub repliki nie potwierdzają operacji. Polecenie cmdlet Get-ServiceFabricDeployedReplicaDetail programu PowerShell może służyć do określania postępu wszystkich replik. Problem polega na replikach, których LastAppliedReplicationSequenceNumber wartość znajduje się za wartością CommittedSequenceNumber podstawowej.

  • IReplicator.BuildReplica(<Remote ReplicaId>): to ostrzeżenie wskazuje problem w procesie kompilacji. Aby uzyskać więcej informacji, zobacz Cykl życia repliki. Może to być spowodowane błędną konfiguracją adresu replikatora. Aby uzyskać więcej informacji, zobacz Konfigurowanie stanowych usług Reliable Services i Określanie zasobów w manifeście usługi. Może to być również problem w węźle zdalnym.

Raporty kondycji systemu replikatora

Kolejka replikacji full:System.Replicator zgłasza ostrzeżenie, gdy kolejka replikacji jest pełna. W podstawowej kolejce replikacji zwykle staje się pełna, ponieważ co najmniej jedna replika pomocnicza powoli potwierdza operacje. W przypadku pomocniczej zwykle dzieje się tak, gdy usługa działa wolno, aby zastosować operacje. Ostrzeżenie jest czyszczone, gdy kolejka nie jest już pełna.

  • SourceId: System.Replicator
  • Właściwość: PrimaryReplicationQueueStatus lub SecondaryReplicationQueueStatus, w zależności od roli repliki.
  • Następne kroki: Jeśli raport znajduje się na serwerze podstawowym, sprawdź połączenie między węzłami w klastrze. Jeśli wszystkie połączenia są w dobrej kondycji, może istnieć co najmniej jedno powolne pomocnicze z dużym opóźnieniem dysku w celu zastosowania operacji. Jeśli raport znajduje się w pomocniczej wersji, najpierw sprawdź użycie dysku i wydajność w węźle. Następnie sprawdź połączenie wychodzące z powolnego węzła do podstawowego.

RemoteReplicatorConnectionStatus:System.Replicator w repliki podstawowej zgłasza ostrzeżenie, gdy połączenie z pomocniczym (zdalnym) replikatorem nie jest w dobrej kondycji. Adres replikatora zdalnego jest wyświetlany w komunikacie raportu, co ułatwia wykrywanie, czy niewłaściwa konfiguracja została przekazana lub czy występują problemy z siecią między replikatorami.

  • SourceId: System.Replicator
  • Właściwość: RemoteReplicatorConnectionStatus.
  • Następne kroki: Sprawdź komunikat o błędzie i upewnij się, że adres replikatora zdalnego jest poprawnie skonfigurowany. Jeśli na przykład zdalny replikator jest otwierany przy użyciu adresu nasłuchiwania "localhost", nie jest dostępny z zewnątrz. Jeśli adres wygląda poprawnie, sprawdź połączenie między węzłem podstawowym a adresem zdalnym, aby znaleźć potencjalne problemy z siecią.

Kolejka replikacji pełna

System.Replicator zgłasza ostrzeżenie, gdy kolejka replikacji jest pełna. W podstawowej kolejce replikacji zwykle staje się pełna, ponieważ co najmniej jedna replika pomocnicza powoli potwierdza operacje. W przypadku pomocniczej zwykle dzieje się tak, gdy usługa działa wolno, aby zastosować operacje. Ostrzeżenie jest czyszczone, gdy kolejka nie jest już pełna.

  • SourceId: System.Replicator
  • Właściwość: PrimaryReplicationQueueStatus lub SecondaryReplicationQueueStatus, w zależności od roli repliki.

Powolne operacje nazewnictwa

System.NamingService zgłasza kondycję repliki podstawowej, gdy operacja nazewnictwa trwa dłużej niż dopuszczalne. Przykłady operacji nazewnictwa to CreateServiceAsync lub DeleteServiceAsync. Więcej metod można znaleźć w obszarze FabricClient. Można je na przykład znaleźć w obszarze metody zarządzania usługami lub metody zarządzania właściwościami.

Uwaga

Usługa Nazewnictwa rozpoznaje nazwy usług w lokalizacji w klastrze. Użytkownicy mogą jej używać do zarządzania nazwami i właściwościami usług. Jest to usługa utrwalonej na partycje usługi Service Fabric. Jedna z partycji reprezentuje właściciela urzędu, który zawiera metadane dotyczące wszystkich nazw i usług usługi Service Fabric. Nazwy usługi Service Fabric są mapowane na różne partycje, nazywane partycjami Właściciela nazwy , więc usługa jest rozszerzalna. Przeczytaj więcej na temat usługi nazewnictwa.

Gdy operacja nazewnictwa trwa dłużej niż oczekiwano, operacja jest oflagowana przy użyciu raportu ostrzegawczego w podstawowej repliki partycji usługi Nazewnictwa, która obsługuje operację. Jeśli operacja zakończy się pomyślnie, ostrzeżenie zostanie wyczyszczone. Jeśli operacja zakończy się z błędem, raport kondycji zawiera szczegółowe informacje o błędzie.

  • SourceId: System.NamingService
  • Właściwość: rozpoczyna się od prefiksu "Duration_" i identyfikuje powolną operację oraz nazwę usługi Service Fabric, na której jest stosowana operacja. Jeśli na przykład tworzenie usługi w nazwie fabric:/MyApp/MyService trwa zbyt długo, właściwość jest Duration_AOCreateService.fabric:/MyApp/MyService. "AO" wskazuje rolę partycji Nazewnictwa dla tej nazwy i operacji.
  • Następne kroki: Sprawdź, dlaczego operacja nazewnictwa kończy się niepowodzeniem. Każda operacja może mieć różne główne przyczyny. Na przykład usługa usuwania może zostać zablokowana. Usługa może zostać zablokowana, ponieważ host aplikacji nadal ulega awarii w węźle z powodu usterki użytkownika w kodzie usługi.

W poniższym przykładzie pokazano operację tworzenia usługi. Operacja trwała dłużej niż skonfigurowany czas trwania. "AO" ponawia próbę i wysyła pracę do "NIE". Operacja "NIE" zakończyła ostatnią operację z limitem CZASU. W takim przypadku ta sama replika jest podstawowa zarówno dla ról "AO" i "NIE".

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

DeployedApplication system health reports (Wdrożone raporty kondycji systemu aplikacji)

System.Hosting jest urzędem wdrożonych jednostek.

Uaktywnienie

System.Hosting raportuje jako OK, gdy aplikacja została pomyślnie aktywowana w węźle. W przeciwnym razie zgłasza błąd.

  • SourceId: System.Hosting
  • Właściwość: aktywacja, w tym wersja wdrożenia.
  • Następne kroki: Jeśli aplikacja jest w złej kondycji, sprawdź, dlaczego aktywacja nie powiodła się.

W poniższym przykładzie pokazano pomyślną aktywację:

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

Pobierz

System.Hosting zgłasza błąd, jeśli pobieranie pakietu aplikacji nie powiedzie się.

  • SourceId: System.Hosting
  • Właściwość: Pobierz, w tym wersję wdrożenia.
  • Następne kroki: Zbadaj, dlaczego pobieranie nie powiodło się w węźle.

Wdrożone raporty kondycji systemuServicePackage

System.Hosting jest urzędem wdrożonych jednostek.

Aktywacja pakietu usługi

System.Hosting zgłasza jako OK, jeśli aktywacja pakietu usługi w węźle zakończy się pomyślnie. W przeciwnym razie zgłasza błąd.

  • SourceId: System.Hosting
  • Właściwość: Aktywacja.
  • Następne kroki: Zbadaj, dlaczego aktywacja nie powiodła się.

Aktywacja pakietu kodu

System.Hosting raportuje jako OK dla każdego pakietu kodu, jeśli aktywacja zakończy się pomyślnie. Jeśli aktywacja zakończy się niepowodzeniem, zostanie wyświetlone ostrzeżenie zgodnie z konfiguracją. Jeśli nie można aktywować pakietu CodePackage lub kończy działanie z błędem większym niż skonfigurowany element CodePackageHealthErrorThreshold, hostowanie zgłasza błąd. Jeśli pakiet usługi zawiera wiele pakietów kodu, dla każdego z nich jest generowany raport aktywacji.

  • SourceId: System.Hosting
  • Właściwość: Używa prefiksu CodePackageActivation i zawiera nazwę pakietu kodu oraz punkt wejścia jako CodePackageActivation:CodePackageName:SetupEntryPoint/EntryPoint. Na przykład CodePackageActivation:Code:SetupEntryPoint.

Rejestracja typu usługi

System.Hosting raportuje jako OK, jeśli typ usługi został pomyślnie zarejestrowany. Zgłasza błąd, jeśli rejestracja nie została wykonana w czasie, zgodnie z konfiguracją przy użyciu parametru ServiceTypeRegistrationTimeout. Jeśli środowisko uruchomieniowe zostanie zamknięte, typ usługi zostanie wyrejestrowany z węzła i hostuje ostrzeżenie.

  • SourceId: System.Hosting
  • Właściwość: używa prefiksu ServiceTypeRegistration i zawiera nazwę typu usługi. Na przykład ServiceTypeRegistration:FileStoreServiceType.

W poniższym przykładzie przedstawiono pakiet usługi w dobrej kondycji:

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

Pobierz

System.Hosting zgłasza błąd, jeśli pobieranie pakietu usługi nie powiedzie się.

  • SourceId: System.Hosting
  • Właściwość: Pobierz, w tym wersję wdrożenia.
  • Następne kroki: Zbadaj, dlaczego pobieranie nie powiodło się w węźle.

Walidacja uaktualnienia

System.Hosting zgłasza błąd w przypadku niepowodzenia walidacji podczas uaktualniania lub niepowodzenia uaktualnienia w węźle.

  • SourceId: System.Hosting
  • Właściwość: używa prefiksu FabricUpgradeValidation i zawiera wersję uaktualnienia.
  • Opis: wskazuje napotkany błąd.

Niezdefiniowana pojemność węzła dla metryk ładu zasobów

System.Hosting zgłasza ostrzeżenie, jeśli pojemności węzłów nie są zdefiniowane w manifeście klastra, a konfiguracja automatycznego wykrywania jest wyłączona. Usługa Service Fabric zgłasza ostrzeżenie o kondycji za każdym razem, gdy pakiet usługi, który używa rejestrów ładu zasobów w określonym węźle.

  • SourceId: System.Hosting
  • Właściwość: Zarządzanie zasobami.
  • Następne kroki: preferowanym sposobem rozwiązania tego problemu jest zmiana manifestu klastra w celu włączenia automatycznego wykrywania dostępnych zasobów. Innym sposobem jest zaktualizowanie manifestu klastra przy użyciu poprawnie określonych pojemności węzłów dla tych metryk.

Następne kroki