grpc 调用时间减少开销

grpc call time reduce overhead

我在 java 应用程序中使用 gRPC(非阻塞存根),两个函数调用之间的响应时间约为 5-8 毫秒。我想减少它。你有什么建议?有可能吗?

gRPC Java 开销通常以微秒(亚毫秒)衡量。如果您看到毫秒级的延迟,一般预期的原因是:

  1. 服务延迟为毫秒。在服务器上,测量服务响应所需的时间。许多服务需要几毫秒来处理请求。

  2. 网络延迟为毫秒。 运行 ping 从一台主机到另一台主机以获得通信性能的下限。 (如果您有兴趣,netperf tcp_rr 是更好的选择。)

  3. 基准测试没有预热 JVM。由于 class 加载发生,第一个 RPC 将非常非常慢。之后,在 JIT 开始编译代码之前,JVM 将使用解释模式一段时间。然后 JIT 将逐步优化代码。因此,请确保有 30 秒以上的持续 RPC 预热期。

  4. Channel 未被重复使用。 DNS 查找、创建网络连接和执行 TLS 握手会增加延迟。但是,如果您对多个 RPC 重用 Channels,那么以后的 RPC 将不需要支付这些延迟成本。