我在 Java 应用程序中使用 gRPC(非阻塞存根),并且两个函数调用之间的响应时间约为 5-8 毫秒。我想减少它。你有什么建议?有可能吗?
gRPC Java 开销通常以微秒(sub-ms)为单位。如果您看到几毫秒的延迟,那么一般期望为什么:
服务延迟为毫秒。在服务器上,测量服务响应所需的时间。许多服务需要几毫秒来处理请求。
网络延迟为毫秒。ping从一台主机运行到另一台主机以获得通信性能的下限。(如果您有兴趣,netperf tcp_rr 是更好的选择。)
基准测试没有预热 JVM。当类加载发生时,第一个 RPC 会非常非常慢。之后,JVM 将在 JIT 开始编译代码之前使用解释模式一段时间。然后 JIT 将逐步优化代码。因此,请确保有 30 秒以上的持续 RPC 预热期。
Channels 没有被重用。DNS 查找、创建网络连接和执行 TLS 握手会增加延迟。但是如果你Channel在多个 RPC 中重用s,那么后面的 RPC 就不需要支付那些延迟成本。
| 归档时间: |
|
| 查看次数: |
1131 次 |
| 最近记录: |