重用连接或更新它们以便频繁发送数据是否更好?

时间:2015-05-14 18:34:07

标签: sockets tcp network-programming

我有一个TCP服务器应用程序,它监听来自发送" heartbeat"的客户端的连接。数据包经常以相当短的间隔,大约20秒。有几百个这样的客户,最多1000个。

之前已经实现(不是我),为每个心跳建立一个新的TCP连接,然后关闭它。

在我看来,保持连接打开并重新用于通信会更好,但我不确定。重新建立连接是浪费时间和带宽,并保持几百个开放连接(在服务器的情况下)不是问题,或者相反,它是浪费资源而不关闭它们?

1 个答案:

答案 0 :(得分:2)

这取决于您拥有的内存量,连接延迟和心跳频率的最佳选项:

  • 每个TCP连接需要1xRTT的时间进行设置,因此每次创建新连接的时间成本都很高,而不是资源。
  • 每个开放的TCP连接都有一个需要在系统上保留的状态,这意味着它占用了内存资源。