由于连接是持久的,我知道在建立新连接时会阻止大量网络拥塞,例如定期轮询数百台服务器。 我有一个简单的问题。它不会在服务器和客户端上加载以保持连接持续很长时间吗?收益是否会失去?
答案 0 :(得分:1)
建立到服务器但不发送或接收(空闲)的TCP(以及WebSocket)连接确实消耗了服务器上的内存,但没有CPU周期。
在某些网络环境(如移动 )上保持TCP连接活动(以及"响应")需要定期发送/接收少量数据。例如。 WebSocket有内置的ping / pong(非app数据)消息。这样做会消耗一些CPU周期,但不会很多。
答案 1 :(得分:0)
持久连接是一种传统。
是的,它们要求服务器存储与每个连接相关联的状态,它们需要维护(例如保持活动数据包或websocket ping),并且它们需要监视(以检测状态更改或到达信息)。因此,每个连接都要花费一些内存和CPU资源。
但是他们在连接重新初始化时节省了大量时间,而且经常是资源;一旦建立,它们允许双方发送和接收信息,而非经典HTTP等非持久性客户端 - 服务器系统。
所以这真的取决于你正在建立的系统。如果您的系统有数百万用户需要偶尔连接到服务器一次,那么保持这些连接打开的好处可能不值得额外的资源。但是如果你为一百个人设计类似聊天服务器的东西,那么额外的响应能力可能是值得的。