2016-08-10 58 views
1

我有一个有状态的服务结构应用程序。在应用程序参数文件我有PartitionCount 20服务结构集群中的分区重新配置

当我到集群中部署服务,我得到20个分区和一些分区状态则显示为“重新配置”,最后他们将警告状态呈现不健康evnet

不健康的事件:SourceId ='System.FM',Property ='State', HealthState ='Warning',ConsiderWarningAsError = false。分区 重新配置所花的时间比预期的要长。

但是,这里面的分区副本的健康状况显出为“OK”

什么是真正发生时,分区是“重新配置”状态? 为什么会发生此错误?

+0

是否有来自ETW的消息?要尝试诊断和调试,只需使用1个分区在本地开发群集上运行,并确保可行。然后用2个分区在本地尝试,确保它能正常工作。如果是这种情况,那么可能20个分区对于集群来说可能太多了。 –

回答

3

有状态服务的重新配置是服务结构在集群周围混洗副本的时候。只要系统需要对副本放置进行更改(可以进行故障切换以确保机器停机或升级期间副本的可用性),或进行资源平衡以确保整个集群中的工作负载平衡,这种情况都会发生 - 后者会立即发生当您部署新服务时,系统必须找到放置副本的地方,然后平衡一切。

如果重新配置需要的时间更长,那么副本无法​​响应更改角色或关闭操作(例如,您的服务代码未响应RunAsync中的取消令牌),或者副本是无法启动(例如,您的通信侦听器代码在OpenAsync上引发异常)。

+0

我的应用程序在本地集群中正常工作,没有任何警告。这是因为本地集群没有重新配置过程,或者它是否与公共集群有关? –

+1

本地群集与您在Azure或其他任何位置部署的群集没有区别,但所有节点都在一台机器上运行。这与您的服务有关,可能与环境有关。例如,确保要部署的群集中的节点上有足够的磁盘空间。对于有状态服务,每个节点至少需要8 GB的可用空间。例如,Azure中的DS系列虚拟机具有非常小的本地磁盘,这对于有状态服务可能是个问题。 –

+0

在进一步的调查中,我发现OpenAsync有时会失败,因为Simple Injector没有专门为Owin配置,这些链接帮助我:http://simpleinjector.readthedocs.io/en/latest/webapiintegration.html http:// simpleinjector .readthedocs.io/EN /最新/ owinintegration.html –

相关问题