每当我从另一个调用一个服务结构服务时,代理上的第一个调用非常慢,即比所有后续调用慢 100 倍。我已经把时间记录在调用之前的时间,然后是被调用的服务方法中的时间,这很容易超过 60 秒!服务结构集群是在 12 个节点/VM 上运行的独立集群。
有趣的是,第一次调用所需的时间长度似乎与节点数量有关,即如果我停用一半节点,时间就会减少(尽管不是一半)。此外,当在我的本地 PC 上运行的开发集群上运行完全相同的代码时,第一个调用所花费的时间通常约为 8 秒,随后的调用在任一系统上花费 < 10 毫秒。此外,在同一客户端进程中为同一服务创建另一个代理仍然会导致快速调用时间,似乎代理工厂(我相信每个客户端进程的 SF 缓存)是在第一次使用代理时创建的,并采取很长时间。
有趣的是,没有抛出异常,服务实际工作!
所以我的问题是,为什么第一次在使用 ServiceProxy.Create() 创建的代理上从一个服务调用另一个服务需要这么长时间?