针对死链接占用资源的情况的解决方法

TCP连接中可能由于网络的问题导致客户端断开连接,但是服务器还存在和他的连接,针对死连接占用资源的情况,如何消除这些占有资源的死连接。
     如果客户端因为网络原因或者崩溃等许多原因断开了与服务端的连接,然而服务端却不知道客户端已经断开了连接并等待客户端给他发送数据占用着系统资源,我们称这样的情况为“死连接”。 在TCP连接通过三次握手连接上了以后,就会服务端就会启动保活计时器,并且服务端每次收到数据都会对保活计时器的超时时间进行更新。比如保活计时器的超时时间设置是两个小时,如果两个小时中服务端并没有收到客户端的数据,那么服务端就认为客户端有可能已经异常断开连接了,然后服务端会向客户端发送一个“探测报文段”,如果收到响应,那么更新保活计时器的超时时间。如果没有收到响应,服务端每隔75秒给客户端发送1个探测报文段,连发10个,如果还是没有响应,那么服务端就认为客户端已经关闭了连接,随即也断开连接,释放因为连接所占用的内存。
     如果客户端崩溃后重新启动,这是服务端将收到一个对其保活探查的响应,但是这个响应是一个复位,使得服务端终止这个连接,他们将进行三次挥手的重新连接工作。

你可能感兴趣的:(Linux,面试知识点)