首页 > 解决方案 > 使用netty的低流量延迟更高

问题描述

在我们的生产环境中,出现了一个奇怪的问题:低流量时延迟更高。然后我用 Netty4 构建 Tcp Server 和 Client 并通过一个连接发送数据。每个请求是 100kB。qps(request per second)=1 的延迟远高于 qps=100 的延迟。条件:

  1. 服务器和客户端之间的 PING 延迟约为 2 毫秒。
  2. 选项 TCP_NODELAY 在两边都打开。
  3. 在服务器端,它将休眠 20 毫秒的 util 响应(模拟 prod 服务)。

测试结果:

qps=1 时不同包大小的延迟

我想找出低流量时性能不佳的原因。我想知道它是否是由某些 Tcp 选项引起的。

标签: tcpnetty

解决方案


最后,我们找出了这种高延迟低流量问题的原因。通过对不同包大小的测试,14KB 是转折点:如果包不大于 14KB,则延迟显示为预期,但如果包大小增加到 15KB,则延迟变差。所以我们尝试将 net.ipv4.tcp_init_cwnd 从 10 更新到 100,延迟下降,因为具有多个 TCP 包的请求可以包含在同一个滑动窗口中。


推荐阅读