Я также задавал этот вопрос на Github — https://github.com/Azure/service-fabric-issues/issues/379
У меня есть (n) актеров, которые выполняют непрерывное напоминание каждую секунду.
Эти актеры работали нормально в течение последних 4 дней, когда из ниоткуда каждый экземпляр получает указанное ниже исключение при вызове StateManager.GetStateAsync. Впоследствии я вижу, что все актеры деактивированы.
Я не могу найти никакой информации, касающейся этого исключения, с которым сталкиваются надежные участники.
Как только возникает это исключение и субъекты деактивируются, они не активируются повторно.
Каковы условия возникновения этой ошибки и как я могу дополнительно диагностировать проблему?
«System.Fabric.FabricNotPrimaryException: было создано исключение типа« System.Fabric.FabricNotPrimaryException ». в Microsoft.ServiceFabric.Actors.Runtime.ActorStateProviderHelper.d__81.MoveNext() --- Конец трассировки стека из предыдущего места, где было создано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) в Microsoft.ServiceFabric.Actors.Runtime.ActorStateManager.d__181.MoveNext() --- Конец трассировки стека из предыдущего расположения, где было выдано исключение --- в System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(задача задачи) в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(задача задачи) в Microsoft.ServiceFabric.Actors.Runtime .ActorStateManager.d__7`1.MoveNext()
Взглянув на обозреватель кластера, я вижу следующие предупреждения в одном из разделов для этой службы актора:
Неработоспособное событие: SourceId='System.FM', Property='State', HealthState='Warning', AcceptWarningAsError=false. Реконфигурация раздела занимает больше времени, чем ожидалось. fabric:/Ism.TvcRecognition.App/TvChannelMonitor 3 3 4dcca5ee-2297-44f9-b63e-76a60df3bc3d S/S IB _Node1_4 Up 131456742276273986 S/P RD _Node1_2 Up 131456742361691499 P/S RD _Node1_0 Down 131457861497316547 (Showing 3 out of 4 replicas. Всего доступных реплик: 1.)
С предупреждением в первичной реплике этого раздела:
Неработоспособное событие: SourceId='System.RAP', Property='IReplicator.CatchupReplicaSetDuration', HealthState='Warning', AcceptWarningAsError=false.
И предупреждение в ActiveSecondary:
Неработоспособное событие: SourceId='System.RAP', Property='IStatefulServiceReplica.CloseDuration', HealthState='Warning', AcceptWarningAsError=false. Время начала (UTC): 2017-08-01 04:51:39.740 _Node1_0
3 из 5 узлов показывают следующую ошибку:
Неработоспособное событие: SourceId='FabricDCA', Property='DataCollectionAgent.DiskSpaceAvailable', HealthState='Warning', AcceptWarningAsError=false. Агенту сбора данных (DCA) не хватает места на диске для работы. Диагностическая информация останется несобранной, если это продолжится.
Дополнительная информация:
Моя установка кластера состоит из 5 узлов виртуальных машин D1.
Ошибки средства просмотра событий в приложении Microsoft-Service Fabric:
я вижу довольно много
Не удалось прочитать некоторые или все события из файла ETL D:\SvcFab\Log\QueryTraces\query_traces_5.6.231.9494_131460372168133038_1.etl. System.ComponentModel.Win32Exception (0x80004005): дескриптор недействителен в Tools.EtlReader.TraceFileEventReader.ReadEvents(DateTime startTime, DateTime endTime) в System.Fabric.Dca.Utility.PerformWithRetries[T](Action`1 worker, T context, RetriableOperationExceptionHandler exceptionHandler, Int32 initialRetryIntervalMs, Int32 maxRetryCount, Int32 maxRetryIntervalMs) в FabricDCA.EtlProcessor.ProcessActiveEtlFile(FileInfo etlFile, DateTime lastEndTime, DateTime& newEndTime, CancellationToken CancellationToken)
и куча предупреждений вроде:
Api ISatefulServiceReplica.Close() медленно работает в разделе {4dcca5ee-2297-44f9-b63e-76a60df3bc3d} реплика 131457861497316547, StartTimeUTC = 2017-08-01T04:51:39.789083900Z
И, наконец, я думаю, что я мог быть в корне всего этого. Журналы приложений Event Viewer содержат множество ошибок, таких как:
Ism.TvcRecognition.TvChannelMonitor (3688) (4dcca5ee-2297-44f9-b63e-76a60df3bc3d:131457861497316547): Попытка записи в файл "D:\SvcFab_App\Ism.TvcRecognition.AppType_App1\work\P_2dc9b74-2f2dcca74-2f2 -76a60df3bc3d\R_131457861497316547\edbres00002.jrs" по смещению 5242880 (0x0000000000500000) для 0 (0x00000000) байт не удалось через 0,000 секунд с системной ошибкой 112 (0x00000070): "На диске недостаточно места. ". Операция записи завершится с ошибкой -1808 (0xfffff8f0). Если эта ошибка повторяется, возможно, файл поврежден и его необходимо восстановить из предыдущей резервной копии.
Итак, эта ошибка указывает на диск D, который является временным хранилищем. Из 50 ГБ свободно 549 МБ. Должна ли Service Fabric действительно сохраняться во временном хранилище?