gpt4 book ai didi

performance - ServiceFabric 代理的初始调用非常慢

转载 作者:行者123 更新时间:2023-12-05 00:51:39 26 4
gpt4 key购买 nike

每当我从另一个调用一个服务结构服务时,代理上的第一个调用非常慢,即比所有后续调用慢 100 倍。我已经把时间记录在调用之前的时间,然后是被调用的服务方法中的时间,这很容易超过 60 秒!服务结构集群是在 12 个节点/VM 上运行的独立集群。

有趣的是,第一次调用所需的时间长度似乎与节点数量有关,即如果我停用一半节点,时间会减少(尽管不是一半)。此外,当在我的本地 PC 上运行的开发集群上运行完全相同的代码时,第一个调用所花费的时间通常约为 8 秒,随后的调用在任一系统上花费 < 10 毫秒。此外,在同一客户端进程中为同一服务创建另一个代理仍然会导致快速调用时间,似乎代理工厂(我相信每个客户端进程的 SF 缓存)是在第一次使用代理时创建的,并采取很长时间。

有趣的是,没有抛出异常,服务实际工作!

所以我的问题是,为什么第一次在使用 ServiceProxy.Create() 创建的代理上从一个服务调用另一个服务需要这么长时间?

最佳答案

根据 The SF remoting docs (见下文,重点是我的),ServiceProxy.Create 是 ServiceProxyFactory 的包装器,第一次调用还涉及为后续调用设置工厂。

ServiceProxyFactory is a factory that creates proxy for different remoting interfaces. If you use API ServiceProxy.Create for creating proxy, then framework creates the singleton ServiceProxyFactory. It is useful to create one manually when you need to override IServiceRemotingClientFactory properties. Factory is an expensive operation. ServiceProxyFactory maintains cache of communication client. Best practice is to cache ServiceProxyFactory for as long as possible.

关于performance - ServiceFabric 代理的初始调用非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43867047/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com