[英]How to increase timeout for an Azure Service Fabric Actor?
我在錯誤日志中發現,我們的Azure Service Fabric無狀態服務在一段時間后嘗試在Actor代理上調用方法時遇到了Microsoft.ServiceFabric.Actors.Runtime.DuplicateMessageException
。 演員可能需要一段時間才能跑步。 異常的完整消息是:
Actor Microsoft.ServiceFabric.Actors.Runtime.ActorConcurrencyLock多次收到相同的請求。 當客戶端重試TimeoutException時,與在客戶端配置的OperationTimeout相比,它需要更多處理時間的請求可能會發生這種情況。
我看不到任何可以配置此值的地方。 我在FabricTransportSettings
類的文檔中看到了對它的引用,但我無法確定在哪里使用了該類型。
由於我們的actor方法運行需要一段時間(通常是幾分鍾),因此,如果此錯誤確實與超時有關,那么如何增加OperationTimeout?
我會考慮更改actor的工作方式,因為您使用所需的參數初始化和“植入” actor。 然后觸發計時器以執行長時間運行的工作。 然后重新查詢參與者,直到工作完成並檢索結果。
使用系統中的參與者,我們有幾個長期運行的工作負載,我們設置為以這種方式工作
您可以在程序集級別設置“超時”值。
using Microsoft.ServiceFabric.Services.Remoting.FabricTransport;
[assembly: FabricTransportServiceRemotingProvider(MaxMessageSize = int.MaxValue,OperationTimeoutInSeconds =2000)]
也許您應該考慮將以下部分放入Settings.xml文件中:
<Section Name="TransportSettings">
<Parameter Name="MaxMessageSize" Value="1073741824" />
<Parameter Name="OperationTimeoutInSeconds" Value="6000" />
</Section>
來源: https : //docs.microsoft.com/zh-cn/azure/service-fabric/service-fabric-reliable-actors-fabrictransportsettings
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.