grpc通话时间减少了开销

时间:2018-12-13 01:32:32

标签: grpc grpc-java

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

1 个答案:

答案 0 :(得分:2)

gRPC Java开销通常以µs(sub-ms)为单位。如果您看到毫秒级的延迟,则通常会期望以下原因:

  1. 服务等待时间为毫秒。在服务器上,测量服务响应需要多长时间。许多服务需要毫秒来处理请求。

  2. 网络延迟为毫秒。从一台主机运行ping,以降低通信性能。 (如果您对此有兴趣,netperf tcp_rr是一个更好的选择。)

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

  4. Channel s未被重用。 DNS查找,创建网络连接以及执行TLS握手会增加延迟。但是,如果您将Channel与多个RPC一起使用,则以后的RPC将不需要支付这些延迟成本。