Azure service fabric 增加RunAsync的超时

Azure service fabric 增加RunAsync的超时,azure-service-fabric,Azure Service Fabric,我正在statefull服务上的RunAsync方法中创建许多服务总线客户机 该方法在开发环境中运行且应用程序无法启动时所需的时间超过了允许的4秒 它失败了,因为我的开发机器和Azure之间似乎存在延迟 我在泰国。Azure位于美国中南部 可以在我的开发设备上本地增加4000毫秒的超时吗 我得到的错误是: { { "Message": "RunAsync has been cancelled for a stateful service replica. The cancellation

我正在statefull服务上的RunAsync方法中创建许多服务总线客户机

该方法在开发环境中运行且应用程序无法启动时所需的时间超过了允许的4秒

它失败了,因为我的开发机器和Azure之间似乎存在延迟

我在泰国。Azure位于美国中南部

可以在我的开发设备上本地增加4000毫秒的超时吗

我得到的错误是:

{ 
{

  "Message": "RunAsync has been cancelled for a stateful service replica. The cancellation will be considered 'slow' if RunAsync does not halt execution within 4000 milliseconds.        
  "Level": "Informational",
  "Keywords": "0x0000F00000000000",
  "EventName": "StatefulRunAsyncCancellation",
  "Payload": {
[...]
"slowCancellationTimeMillis": 4000.0
}
}问题不是
RunAsync
运行时间太长,而是取消太长

服务结构有一个默认(硬编码)超时4秒,用于报告“缓慢”取消。这仅仅意味着在这段时间之后,它将产生一个运行状况事件(这在升级期间可能很重要,因为它会影响整个应用程序的运行状况)


真正的问题是
RunAsync
的实现。当您删除或升级服务时,服务结构将等待(可能永远)它正常关闭。您的代码应该尊重传递给
RunAsync
方法的
CancellationToken
。例如,如果您有多个IO操作,请在每个操作之后调用
cancellationToken.ThrowIfCancellationRequested()
,并将其传递给任何将其作为参数接受的方法。

问题不在于
RunAsync
运行时间太长,而在于取消时间太长

服务结构有一个默认(硬编码)超时4秒,用于报告“缓慢”取消。这仅仅意味着在这段时间之后,它将产生一个运行状况事件(这在升级期间可能很重要,因为它会影响整个应用程序的运行状况)


真正的问题是
RunAsync
的实现。当您删除或升级服务时,服务结构将等待(可能永远)它正常关闭。您的代码应该尊重传递给
RunAsync
方法的
CancellationToken
。例如,如果您有多个IO操作,请在每个操作之后调用
cancellationToken.ThrowIfCancellationRequested()
,并将其传递给任何将其作为参数接受的方法。

是否可以显示一些代码和错误消息?据我所知,没有这样的暂停<只要服务实例/复制是主实例,code>RunAsync就可以连续运行。有一个缓慢的取消警告,但只有当服务改变角色或被删除时,它才会生成一个运行状况报告。我收到的是一个缓慢的警告。我已经用更多的细节编辑了我的帖子。当然,就在这一刻,申请书上写得很好。。。没有任何代码更改。我想你可以忽略这个警告。无论如何,目前无法更改超时(它是硬编码的)。当实例第一次启动并成为主实例时,我会收到错误。很难忽略,由于它阻止集群启动,但它现在正在工作:-)我将在美国中南部启动一个开发环境,如果问题再次出现,我将以这种方式处理它。您能显示一些代码和错误消息吗?据我所知,没有这样的暂停<只要服务实例/复制是主实例,code>RunAsync就可以连续运行。有一个缓慢的取消警告,但只有当服务改变角色或被删除时,它才会生成一个运行状况报告。我收到的是一个缓慢的警告。我已经用更多的细节编辑了我的帖子。当然,就在这一刻,申请书上写得很好。。。没有任何代码更改。我想你可以忽略这个警告。无论如何,目前无法更改超时(它是硬编码的)。当实例第一次启动并成为主实例时,我会收到错误。很难忽略,由于它阻止集群启动,但它现在正在工作:-)我将在美国中南部启动一个开发环境,如果问题再次出现,我将以这种方式处理它。谢谢你提供的信息。我将检查这部分代码。@Eli有没有办法让服务结构终止我的服务?它安全且“等幂”地工作,因此可以随时杀死它,而不会有悲伤(或健康事件)@iai我知道的唯一方法是删除该服务(例如使用PowerShell)。谢谢您提供的信息。我将检查这部分代码。@Eli有没有办法让服务结构终止我的服务?它安全且“等幂”地工作,因此可以随时杀死它,而不会有悲伤(或健康事件)@iai我知道的唯一方法是删除该服务(例如使用PowerShell)