Performance 每个消息创建新TCP连接的性能影响
在过去,我们的服务器应用程序是这样设计的:客户机创建一个TCP连接,无限期地建立此连接,并在需要时发送消息。这些消息可能以高容量突发方式出现,或者在这两者之间有较长的空闲时间。我们现在正在切换到一个不同的连接协议,客户端将为每条消息创建一个新的连接,然后在发送后断开连接 我有几个问题:Performance 每个消息创建新TCP连接的性能影响,performance,sockets,networking,service,tcp,Performance,Sockets,Networking,Service,Tcp,在过去,我们的服务器应用程序是这样设计的:客户机创建一个TCP连接,无限期地建立此连接,并在需要时发送消息。这些消息可能以高容量突发方式出现,或者在这两者之间有较长的空闲时间。我们现在正在切换到一个不同的连接协议,客户端将为每条消息创建一个新的连接,然后在发送后断开连接 我有几个问题: 我知道三次握手建立连接会有一些开销。但是,这种开销是否显著(cpu、内存、带宽等) 已建立的TCP连接空闲数分钟,传输消息的延迟与创建新连接并发送消息的延迟之间是否存在差异 如果我试图确定与旧连接协议相比,切换到
非常感谢您的帮助。打开和关闭大量TCP会话可能会影响连接跟踪防火墙和负载平衡器,导致它们速度减慢,甚至失败并拒绝连接。有些,如Linux iptables conntrack,对于跟踪的连接数具有中等的默认值 如果程序循环消息太快,可能会耗尽可用的本地端口号。在套接字被视为“关闭”之前,存在TCP超时。通常有一个操作系统计时器来清理这些关闭的连接。如果太多插槽打开得太快,操作系统可能没有时间清理 握手会给您的带宽成本增加大约80字节。TCP连接关闭还涉及FIN或RST数据包,尽管这些标志可能与数据包组合
如果为消息发送方启用Nagle算法,则已建立TCP会话中的延迟可能会稍微高一点。Nagle使操作系统在发送部分填充的数据包之前等待更多数据。正在关闭的TCP会话将刷新所有数据。在打开的会话中,可以通过禁用Nagle与