我的状态服务运行缓慢,暂时没有活动。似乎在一段时间不活动后的第一个电话非常慢(10 +秒)。后续调用不会遇到此问题。这似乎是服务停用和唤醒的经典案例。
我知道有状态的演员会这样做,但是,有状态的服务正在发生这种情况。这在我的开发和测试集群中被注意到,其中活动是稀疏且不一致的。对于披露,这些环境以尽可能最低的资源运行(A0 vms,青铜级可用性)。无论如何,我认为有状态的服务应该始终在运行。
我如何让它们保持温暖和活化?另外,我如何诊断实际发生的情况?
答案 0 :(得分:0)
Service Fabric在停用或将服务置于睡眠方面没有做任何事情。让我们看看在Windows上用C#编写的可靠服务的运行命名实例是:
这就是全部。 Service Fabric将不会关闭进程,如果它处于“空闲”状态(无论这意味着什么 - Service Fabric没有这样的定义),并且对象实例是根深蒂固的,因此不会被垃圾回收。
因此,适用于任何.NET应用程序的所有相同因素都适用于此处。
如果我不得不猜测 - 在不了解您的应用程序的任何其他事项的情况下 - A0虚拟机最有可能受到指责。您的内存少于1 GB,因此分页可能是个问题。您拥有共享CPU核心的一小部分,因此可能存在问题。
我绝不推荐使用A0s。这不仅是因为极其有限的功率会影响您的服务,还会影响Service Fabric系统服务,使您的服务保持活力和健康。