상태 저장 Reliable Services의 진단 기능
Azure Service Fabric 상태 저장 Reliable Services StatefulServiceBase 클래스는 서비스를 디버그하는 데 사용할 수 있는 EventSource 이벤트를 내보내고, 런타임이 작동하는 방법에 대한 고급 정보를 제공하고 문제 해결에 도움을 줍니다.
EventSource 이벤트
Stateful Reliable Services StatefulServiceBase 클래스의 EventSource 이름은 "Microsoft-ServiceFabric-Services"입니다. 이 이벤트 원본의 이벤트는 서비스를 Visual Studio에서 디버그하는 경우 진단 이벤트 창에 나타납니다.
EventSource 이벤트를 수집하거나 보는 데 도움이 되는 도구 및 기술의 예로 PerfView, Azure Diagnostics 및 Microsoft TraceEvent 라이브러리가 있습니다.
이벤트
이벤트 이름 | 이벤트 ID | Level | 이벤트 설명 |
---|---|---|---|
StatefulRunAsyncInvocation | 1 | 정보 제공 | 서비스 RunAsync 작업이 시작되면 내보내집니다. |
StatefulRunAsyncCancellation | 2 | Informational | 서비스 RunAsync 작업이 취소되면 내보내집니다. |
StatefulRunAsyncCompletion | 3 | Informational | 서비스 RunAsync 작업이 완료되면 내보내집니다. |
StatefulRunAsyncSlowCancellation | 4 | Warning | 서비스 RunAsync 작업이 취소를 완료하는 데 너무 오래 걸리는 경우 내보내집니다. |
StatefulRunAsyncFailure | 5 | 오류 | 서비스 RunAsync 작업이 예외를 throw하면 내보내집니다. |
이벤트 해석
StatefulRunAsyncInvocation, StatefulRunAsyncCompletion 및 StatefulRunAsyncCancellation 이벤트는 서비스 작성자가 서비스 시작, 취소 또는 완료 타이밍과 서비스의 수명 주기를 이해하는 데 유용합니다. 이 정보는 서비스 문제를 디버깅하거나 서비스 수명 주기를 이해할 때 유용할 수 있습니다.
StatefulRunAsyncSlowCancellation 및 StatefulRunAsyncFailure 이벤트는 서비스와 관련된 문제를 나타내므로 서비스 작성자는 이 이벤트에 세심한 주의를 기울여야 합니다.
서비스 RunAsync() 작업이 예외를 throw할 때마다 StatefulRunAsyncFailure가 내보내집니다. 일반적으로 throw된 예외는 서비스의 오류 또는 버그를 나타냅니다. 또한 예외로 인해 서비스가 실패하므로 다른 노드로 이동시켜야 합니다. 이 작업은 비용이 많이 소요될 수 있으며 서비스가 이동하는 동안 들어오는 요청을 지연시킬 수 있습니다. 서비스 작성자는 예외의 원인을 확인하고 가능한 경우 이를 완화해야 합니다.
RunAsync 작업에 대한 취소 요청이 4초보다 오래 걸릴 경우 StatefulRunAsyncSlowCancellation이 내보내집니다. 서비스 취소 완료 시간이 너무 오래 걸리는 경우 서비스가 다른 노드에서 신속하게 다시 시작하는 기능에 영향을 줄 수 있습니다. 이 시나리오는 서비스의 전반적인 가용성에 영향을 줄 수 있습니다.
성능 카운터
Reliable Services 런타임은 다음과 같은 성능 카운터 범주를 정의합니다.
범주 | 설명 |
---|---|
Service Fabric 트랜잭션 복제기 | Azure Service Fabric 트랜잭션 복제기 관련 카운터 |
Service Fabric TStore | Azure Service Fabric TStore 관련 카운터 |
Service Fabric 트랜잭션 복제기는 신뢰할 수 있는 상태 관리자에서 지정된 복제본 집합 내의 트랜잭션을 복제하는 데 사용합니다.
Service Fabric TStore는 키-값 쌍을 저장 및 검색하기 위한 신뢰할 수 있는 컬렉션에서 사용되는 구성 요소입니다.
Windows 운영 체제에서 기본적으로 사용할 수 있는 Windows 성능 모니터 애플리케이션을 사용하면 성능 카운터 데이터를 수집하고 볼 수 있습니다. Azure Diagnostics는 성능 카운터 데이터를 수집하여 Azure 테이블에 업로드하기 위한 또 다른 옵션입니다.
성능 카운터 인스턴스 이름
많은 수의 Reliable Services 또는 Reliable Services 파티션이 있는 클러스터에는 트랜잭션 복제기 성능 카운터 인스턴스가 많이 있습니다. 이것은 TStore 성능 카운터에 대한 사례이기도 하지만 사용된 신뢰할 수 있는 사전 및 신뢰할 수 있는 큐 수로 곱합니다. 성능 카운터 인스턴스 이름은 성능 카운터 인스턴스가 연결된 특정 파티션, 서비스 복제본 및 상태 공급자(TStore의 경우)를 식별하는 데 도움이 될 수 있습니다.
Service Fabric 트랜잭션 복제기 범주
Service Fabric Transactional Replicator
범주의 경우 카운터 인스턴스 이름이 다음과 같은 형식으로 표시됩니다.
ServiceFabricPartitionId:ServiceFabricReplicaId
ServiceFabricPartitionId는 성능 카운터 인스턴스와 연결된 Service Fabric 파티션 ID의 문자열 표현입니다. 파티션 ID는 GUID이며 해당 문자열 표현은 형식 지정자 "D"와 함께 Guid.ToString
를 통해 생성됩니다.
ServiceFabricReplicaId는 지정된 Reliable Services 복제본와 연결된 ID입니다. 복제본 ID는 고유성을 보장하고 동일한 파티션에서 생성된 다른 성능 카운터 인스턴스와의 충돌을 방지하기 위해 성능 카운터 인스턴스 이름에 포함됩니다. Reliable Services의 복제본 및 해당 역할에 대한 자세한 내용은 여기에서 찾을 수 있습니다.
다음 카운터 인스턴스 이름은 Service Fabric Transactional Replicator
범주 아래의 카운터에 일반적인 이름입니다.
00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571
앞의 예제에서 00d0126d-3e36-4d68-98da-cc4f7195d85e
은 Service Fabric 파티션 ID의 문자열 표현이고 131652217797162571
은 복제본 ID입니다.
Service Fabric TStore 범주
Service Fabric TStore
범주의 경우 카운터 인스턴스 이름이 다음과 같은 형식으로 표시됩니다.
ServiceFabricPartitionId:ServiceFabricReplicaId:StateProviderId_PerformanceCounterInstanceDifferentiator_StateProviderName
ServiceFabricPartitionId는 성능 카운터 인스턴스와 연결된 Service Fabric 파티션 ID의 문자열 표현입니다. 파티션 ID는 GUID이며 해당 문자열 표현은 형식 지정자 "D"와 함께 Guid.ToString
를 통해 생성됩니다.
ServiceFabricReplicaId는 지정된 Reliable Services 복제본와 연결된 ID입니다. 복제본 ID는 고유성을 보장하고 동일한 파티션에서 생성된 다른 성능 카운터 인스턴스와의 충돌을 방지하기 위해 성능 카운터 인스턴스 이름에 포함됩니다. Reliable Services의 복제본 및 해당 역할에 대한 자세한 내용은 여기에서 찾을 수 있습니다.
StateProviderId는 신뢰할 수 있는 서비스 내의 상태 제공자와 연결된 ID입니다. 상태 제공자 ID는 TStore 간에 구분하기 위해 성능 카운터 인스턴스 이름에 포함됩니다.
PerformanceCounterInstanceDifferentiator는 상태 공급자 내에서 성능 카운터 인스턴스와 연결된 차별화 ID입니다. 이 구별자는 고유성을 보장하고 동일한 상태 공급자가 생성한 다른 성능 카운터 인스턴스와 충돌하지 않도록 하기 위해 성능 카운터 인스턴스에 포함됩니다.
StateProviderName은 신뢰할 수 있는 서비스 내의 상태 제공자와 연결된 이름입니다. 상태 제공자 이름은 어떤 상태를 제공하는지 사용자가 쉽게 식별하도록 성능 카운터 인스턴스 이름에 포함됩니다.
다음 카운터 인스턴스 이름은 Service Fabric TStore
범주 아래의 카운터에 일반적인 이름입니다.
00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571:142652217797162571_1337_urn:MyReliableDictionary/dataStore
앞의 예제에서 00d0126d-3e36-4d68-98da-cc4f7195d85e
는 Service Fabric 파티션 ID의 문자열 표현이고, 131652217797162571
은 복제본 ID이고, 142652217797162571
은 상태 공급자 ID이고, 1337
은 성능 카운터 인스턴스 구별자입니다. urn:MyReliableDictionary/dataStore
은(는) urn:MyReliableDictionary
(이)라는 컬렉션에 대한 데이터를 저장하는 상태 제공자의 이름입니다.
트랜잭션 복제기 성능 카운터
Reliable Services 런타임은 Service Fabric Transactional Replicator
범주 아래에 다음 이벤트를 내보냅니다.
카운터 이름 | 설명 |
---|---|
Begin Txn Operations/sec | 초당 만들어진 새 쓰기 트랜잭션의 수입니다. |
Txn Operations/sec | 초당 신뢰할 수 있는 컬렉션에 대해 수행된 추가/업데이트/삭제 작업의 수입니다. |
로그 플러시 바이트/초 | 트랜잭션 복제기가 초당 디스크에 플러시하는 바이트 수입니다. |
Throttled Operations/sec | 제한 때문에 트랜잭션 복제기가 초당 거부한 작업 수입니다. |
평균 Transaction ms/Commit | 트랜잭션당 평균 커밋 대기 시간(밀리초)입니다. |
평균 Flush Latency (ms) | 트랜잭션 복제기가 시작한 디스크 플러시 작업의 평균 지속 시간(밀리초)입니다. |
TStore 성능 카운터
Reliable Services 런타임은 Service Fabric TStore
범주 아래에 다음 이벤트를 내보냅니다.
카운터 이름 | 설명 |
---|---|
Item Count | 스토어에 있는 항목의 수 |
디스크 크기 | 저장소에 대한 검사점 파일의 전체 디스크 크기(바이트) |
검사점 파일 쓰기(바이트/초) | 가장 최근 검사점 파일에 쓴 초당 바이트 수 |
복사본 디스크 전송(바이트/초) | 저장소 복사 중 초당 읽거나(주 복제본에서) 쓴(보조 복제본에서) 디스크 바이트 수 |