【问题标题】:grpc call time reduce overheadgrpc 调用时间减少开销
【发布时间】:2018-12-13 01:32:31
【问题描述】:

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

【问题讨论】:

    标签: grpc grpc-java


    【解决方案1】:

    gRPC Java 开销通常以 µs(亚毫秒)为单位。如果您看到几毫秒的延迟,一般预期的原因是:

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

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

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

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

    【讨论】:

    • 感谢您的回复。应该会有所帮助。我会试试的。
    • 在频道复用方面,使用ManagedChannel时需要设置什么参数吗?
    • 重用不需要参数。如果您指定executor(),请意识到它适用于该通道上的所有异步/未来调用。但这不足为奇。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    • 2019-03-19
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2012-02-12
    相关资源
    最近更新 更多