当前位置 : 主页 > 网络安全 > 测试自动化 >

性能 – ServiceFabric代理上的初始调用非常慢

来源:互联网 收集:自由互联 发布时间:2021-06-22
每当我从另一个呼叫一个服务结构服务时,代理上的第一个呼叫非常慢,即比所有后续呼叫慢100倍.我已经将该记录中的时间安排在紧接呼叫之前的时间,然后立即调用服务方法中的时间,这
每当我从另一个呼叫一个服务结构服务时,代理上的第一个呼叫非常慢,即比所有后续呼叫慢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.

网友评论