Наше приложение одним запросом создает одного актера в любом одном разделе, и для обработки одного запроса память увеличивается на 200-250 МБ во время выполнения актера, а после завершения выполнения я удалил актера
Task.Run(() =>
{
actorObject.ExecuteGrainAsync(requestId, jsonModel).ContinueWith(async (t) =>
{
await GrainFactory.DeleteActor(actorObject.GetActorId(), "Workflow", CancellationToken.None);
});
});
IActorService myActorServiceProxy = ActorServiceProxy.Create(
new Uri($"fabric:/APPSeConnect.WebAgent/{actorName}"), actorId);
await myActorServiceProxy.DeleteActorAsync(actorId, cancellationToken);
В разделе нет активных действующих лиц, которых мы можем проверить, запросив fabri c, но память все равно блокируется на много минут (5 минут - более 50 минут). Позже размер памяти exe уменьшается всего на несколько МБ.
В соответствии с этим Документ память должна быть востребована во время выполнения в idealtimeout. Моя настройка:
new ActorGarbageCollectionSettings(10, 2)
Я тоже использую этот атрибут
[StatePersistence(StatePersistence.None)]
При параллельной обработке акторов это влияние огромно.