AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 758079
Accepted
allo
allo
Asked: 2016-02-19 03:47:34 +0800 CST2016-02-19 03:47:34 +0800 CST 2016-02-19 03:47:34 +0800 CST

单个 tcp 连接的吞吐量不佳

  • 772

我有一台带有千兆上行链路的服务器,iperf3使用 100 个并行连接进行测试,我得到至少 600 MBit/s,具体取决于另一台服务器(我尝试了一些公共测试服务器)。但是当我iperf3使用一个连接运行时,我得到10-15 MBit/s了两个20-30 MBit/s,依此类推。

我没有很复杂的 iptables 规则,也没有其他想法,为什么它这么慢。单个 tcp 连接的限制因素是什么,它们比可能的带宽慢 10 倍?

tcp
  • 2 2 个回答
  • 2884 Views

2 个回答

  • Voted
  1. Best Answer
    allo
    2016-06-25T09:43:50+08:002016-06-25T09:43:50+08:00

    我终于找到了问题的原因。

    我有一些烧瓶 webapp,它使用 redis 将事件流式传输给用户。当用户断开连接时,应用程序保持 redis pubsub 连接处于活动状态,不再读取数据。

    这会导致长Send-Q/ Recv-Q,这显然会导致 tcp 堆栈变慢并产生内核警告:“ TCP:内存不足 - 考虑调整 tcp_mem ”。

    • 短期修复:杀死具有长数据包队列的进程。
    • 长期解决方案:修复行为不端的程序。
    • 1
  2. Jeremy Gibbons
    2016-02-19T05:07:34+08:002016-02-19T05:07:34+08:00

    单个 TCP 会话受到每个会话窗口大小的限制,该窗口表示在任何给定时间两个端点之间可以“飞行”的最大字节数。因此,如果您的链接有高延迟,您可以达到每个会话的限制,即 windowSize / RTT。

    解决这个问题的唯一方法(因为您通常不能对 RTT 做很多事情)要么使用更多会话,要么使用窗口缩放显着增加窗口大小。我不知道 iPerf 的设置与此相关,或者您是否可能在端点之间有防火墙或其他过滤器,即使 iPerf 和您的服务器都支持它,也会阻止缩放。

    • 0

相关问题

  • 使用 TOAD 客户端通信配置保活

  • ping 尝试中的“TTL 在传输中过期”是什么意思?

  • 在自写的 tcp 服务器上使用哪些端口

  • 将文本文件输出到 TCP 端口

  • 使用多个 NIC 增加带宽

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve