每当我从一个Service Fabric服务调用另一个服务时,代理的第一次调用非常慢,即比所有后续调用慢100倍。我在记录调用之前和服务方法被调用时的时间,并且这很容易超过60秒! Service Fabric集群是在12个节点/虚拟机上运行的独立集群。
有趣的是,第一次调用所需的时间似乎与节点数相关,即如果我停用了一半的节点,则时间会缩短(但不会减半)。此外,当在我的本地PC上运行开发集群上完全相同的代码时,第一次调用所需的时间通常约为8秒,而两个系统上的后续调用都需要小于10ms。此外,在同一客户端进程中创建到同一服务的另一个代理仍会导致快速调用时间,似乎代理工厂(我认为SF每个客户端进程缓存)在代理首次使用时创建并花费很长时间。
有趣的是,没有抛出任何异常,服务实际上可以正常工作!
因此,我的问题是,为什么使用ServiceProxy.Create()创建的代理进行从一个服务到另一个服务的调用时,第一次调用需要这么长时间?
有趣的是,第一次调用所需的时间似乎与节点数相关,即如果我停用了一半的节点,则时间会缩短(但不会减半)。此外,当在我的本地PC上运行开发集群上完全相同的代码时,第一次调用所需的时间通常约为8秒,而两个系统上的后续调用都需要小于10ms。此外,在同一客户端进程中创建到同一服务的另一个代理仍会导致快速调用时间,似乎代理工厂(我认为SF每个客户端进程缓存)在代理首次使用时创建并花费很长时间。
有趣的是,没有抛出任何异常,服务实际上可以正常工作!
因此,我的问题是,为什么使用ServiceProxy.Create()创建的代理进行从一个服务到另一个服务的调用时,第一次调用需要这么长时间?