Диагностические функции для надежных служб с отслеживанием состояния

Класс StatefulServiceBase служб Reliable Services с отслеживанием состояния Azure Service Fabric генерирует события EventSource, которые можно использовать для отладки. Они позволяют исследовать работу среды выполнения и помогают устранять неполадки.

События EventSource

Имя EventSource для класса StatefulServiceBase надежной службы с отслеживанием состояния — Microsoft-ServiceFabric-Services. События из этого источника событий отображаются в окне События диагностики при отладке службы в Visual Studio.

Для сбора и просмотра событий EventSource вы можете использовать такие средства и технологии, как PerfView, система диагностики Azure и библиотека Microsoft TraceEvent.

События

Имя события Идентификатор события Level Описание события
StatefulRunAsyncInvocation 1 Информационный Генерируется, когда запускается задача RunAsync службы.
StatefulRunAsyncCancellation 2 Информационный Генерируется, когда отменяется задача RunAsync службы.
StatefulRunAsyncCompletion 3 Информационный Генерируется, когда завершается задача RunAsync службы.
StatefulRunAsyncSlowCancellation 4 Предупреждение Генерируется, когда отмена задачи RunAsync службы выполняется слишком долго.
StatefulRunAsyncFailure 5 Ошибка Генерируется, когда задача RunAsync службы вызывает исключение.

Интерпретация событий

События StatefulRunAsyncInvocation, StatefulRunAsyncCompletion и StatefulRunAsyncCancellation полезны для разработчика служб тем, что позволяют понять жизненный цикл службы и правильно определить время запуска, отмены или завершения службы. Эти сведения могут быть полезными при отладке службы и анализе ее жизненного цикла.

Разработчикам служб следует обратить особое внимание на события StatefulRunAsyncSlowCancellation и StatefulRunAsyncFailure, так как они свидетельствуют о наличии проблем со службой.

Событие StatefulRunAsyncFailure генерируется каждый раз, когда задача RunAsync() службы вызывает исключение. Обычно исключение указывает на наличие ошибки или дефекта в работе службы. Кроме того, исключение приводит к отказу службы и, как следствие, ее перемещению на другой узел. Эта операция может быть ресурсоемкой, из-за чего входящие запросы будут обработаны с задержкой. Разработчикам службы следует определить причину исключения и по возможности нейтрализовать ее.

Событие StatefulRunAsyncSlowCancellation генерируется всякий раз, когда выполнение запроса на отмену задачи RunAsync занимает больше четырех секунд. Если отмена выполняется слишком долго, служба не может быстро перезапуститься на другом узле. Кроме того, снижается ее общая доступность.

Счетчики производительности

Среда выполнения служб Reliable Services определяет указанные ниже категории счетчиков производительности.

Категория Description
Репликатор транзакций Service Fabric Счетчики для репликатора транзакций Azure Service Fabric
Service Fabric TStore Счетчики для Azure Service Fabric TStore

Репликатор транзакций Service Fabric используется диспетчером надежных состояний для репликации транзакций в пределах заданного набора реплик.

Service Fabric TStore — это компонент, который используется в надежных коллекциях для хранения и извлечения пар "ключ-значение".

Для сбора и просмотра данных счетчиков производительности можно использовать системный монитор Windows , доступный по умолчанию в операционной системе Windows. Диагностика Azure , в свою очередь, позволяет не только собирать данные счетчиков производительности, но и загружать их в таблицы Azure.

Имена экземпляров счетчиков производительности

В кластере, содержащем большое количество надежных служб или секций надежных служб, находится большое количество экземпляров счетчиков производительности репликатора транзакций. Это же применимо и для счетчиков производительности TStore, но с учетом числа используемых надежных словарей и очередей. Имя экземпляра счетчика производительности помогает определить конкретную секцию, реплику службы и поставщика состояний, с которыми связан этот экземпляр.

Категория репликатора транзакций Service Fabric

Экземпляры счетчиков в категории Service Fabric Transactional Replicatorимеют имена в следующем формате:

ServiceFabricPartitionId:ServiceFabricReplicaId

ServiceFabricPartitionID — это строка идентификатора секции Service Fabric, c которой связан экземпляр счетчика производительности. Это идентификатор GUID, строковое представление которого создается методом Guid.ToString с использованием описателя формата D.

ServiceFabricReplicaId — идентификатор, связанный с конкретной репликой надежной службы. В имя экземпляра счетчика производительности включается идентификатор реплики для того, чтобы обеспечить его уникальность и избежать конфликтов с другими экземплярами счетчиков производительности, созданными той же секцией. Дополнительные сведения о репликах и их роли в надежных службах см. в этой статье.

Следующее имя экземпляра счетчика является типичным для счетчиков в категории Service Fabric Transactional Replicator.

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

В предыдущем примере 00d0126d-3e36-4d68-98da-cc4f7195d85e является строковым представлением идентификатора секции Service Fabric, а 131652217797162571 — идентификатором реплики.

Категория Service Fabric TStore

Экземпляры счетчиков в категории Service Fabric TStoreимеют имена в следующем формате:

ServiceFabricPartitionId:ServiceFabricReplicaId:StateProviderId_PerformanceCounterInstanceDifferentiator_StateProviderName

ServiceFabricPartitionID — это строка идентификатора секции Service Fabric, c которой связан экземпляр счетчика производительности. Это идентификатор GUID, строковое представление которого создается методом Guid.ToString с использованием описателя формата D.

ServiceFabricReplicaId — идентификатор, связанный с конкретной репликой надежной службы. В имя экземпляра счетчика производительности включается идентификатор реплики для того, чтобы обеспечить его уникальность и избежать конфликтов с другими экземплярами счетчиков производительности, созданными той же секцией. Дополнительные сведения о репликах и их роли в надежных службах см. в этой статье.

StateProviderId — это идентификатор, связанный с поставщиком состояний в пределах надежной службы. Идентификатор поставщика состояния включен в имя экземпляра счетчика производительности, чтобы сделать TStore уникальными.

PerformanceCounterInstanceDifferentiator — отличительный идентификатор, связанный с экземпляром счетчика производительности в пределах поставщика состояний. В имя экземпляра счетчика производительности этот идентификатор включается для того, чтобы обеспечить его уникальность и избежать конфликтов с другими экземплярами счетчиков производительности, созданными тем же поставщиком состояний.

StateProviderName — это имя, связанное с поставщиком состояний в пределах надежной службы. Имя поставщика состояний включается в имя экземпляра счетчика производительности, чтобы пользователи могли легко определить, какое состояние он предоставляет.

Следующее имя экземпляра счетчика является типичным для счетчиков в категории Service Fabric TStore.

00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571:142652217797162571_1337_urn:MyReliableDictionary/dataStore

В предыдущем примере 00d0126d-3e36-4d68-98da-cc4f7195d85e является строковым представлением идентификатора секции Service Fabric, 131652217797162571 — идентификатором реплики, 142652217797162571 — идентификатор поставщика состояний, а 1337 — идентификатор экземпляра счетчика производительности. urn:MyReliableDictionary/dataStore — это имя поставщика состояний, в котором хранятся данные для коллекции с именем urn:MyReliableDictionary.

Счетчики производительности репликатора транзакций

Среда выполнения Reliable Services выдает следующие события в категории Service Fabric Transactional Replicator.

Имя счетчика Description
Операций начала транзакций/с Число новых транзакций записи, создаваемых в секунду.
Операций транзакций/с Число операций добавления, обновления и удаления, выполненных для надежных коллекций, в секунду.
Байты записи журнала на диск в секунду Число байтов, записываемых на диск репликатором транзакций в секунду.
Регулируемых операций/с Число операций, отклоняемых репликатором транзакций каждую секунду из-за регулирования.
Среднее время транзакций на фиксацию (мс) Среднее время задержки фиксации на транзакцию (в мс).
Средняя задержка записи на диск (мс) Средняя продолжительность операции окончательной записи данных на диск, инициированной репликатором транзакций (в мс).

Счетчики производительности TStore

Среда выполнения Reliable Services выдает следующие события в категории Service Fabric TStore.

Имя счетчика Description
Количество элементов Число элементов в хранилище.
Размер диска Общий размер в байтах, занимаемый на диске файлами контрольных точек хранилища.
Запись в файл контрольной точки, байт/с Число байтов, записываемых в секунду в последний файл контрольной точки.
Передача на диск при копировании (байт/с) Число байтов, считываемых (с первичной реплики) или записываемых (на вторичную реплику) в секунду при копировании хранилища.

Следующие шаги

Поставщики EventSource в PerfView