是重用连接更好,还是为了频繁发送数据而更新连接?

Is it better to reuse connections, or renew them for sending data frequently?

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

它以前已经实现(不是我),这样每次心跳都会建立一个新的 TCP 连接,然后关闭。

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

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

  • 每个 TCP 连接需要 1xRTT 时间来建立,因此每次创建一个新连接在时间上而不是资源上是昂贵的。
  • 每个打开的TCP连接都有一个状态需要保存在系统中,这意味着它会占用内存资源。