首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用protobuf-net c#第一次访问gRPC端点时性能缓慢

使用protobuf-net c#第一次访问gRPC端点时性能缓慢
EN

Stack Overflow用户
提问于 2021-09-07 14:50:58
回答 1查看 213关注 0票数 0

我有一个使用protobuf-net.gRPC的gRPC服务器,它使用.NET Core3.1。它使用HTTP框架和ASP.NET幕后运行HTTP。我注意到,第一次访问此服务器上的gRPC端点时,与同一端点上的后续调用相比,它们在ASP中间件上花费的时间要多得多。

代码语言:javascript
复制
Time taken from 
Microsoft.AspNetCore.Routing.EndpointMiddleware[ExecutedEndPoint] : Executing endpoint 'gRPC - /grpc.....'

Until hitting the actual endpoint function in my gRPC server

第一次花费的时间在30-40 Ma左右相当高,而随后对同一端点的调用大约为1-2ms。

这是因为JIT编译器从IL->Native代码编译而来的吗?如果是这样的话,除了强制调用端点等显而易见的方法之外,是否有其他方法可以绕过这个首次性能问题?

问候

EN

回答 1

Stack Overflow用户

发布于 2021-09-07 23:19:50

这可能是由于gRPC的设计,因为通道的连接直到发出第一个RPC调用时才建立。

30-40ms可能是为了打开TCP连接+ SSL握手+ HTTP/2设置帧交换。下面的RPC调用重用了这个通道/连接,因此没有这个开销。

对于Java,有一个实验性的API getState,客户端可以在通道创建之后立即使用requestConnection = true参数调用它来发起连接。不确定它是否在C#中可用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69090370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档