一、 机器环境情况
机器A和B上分别起着服务A和B,服务A和B之间通过tcp协议通信。
二、测试情况分析
情况一:B机器不停服务直接关机情况下(shutdown机器),服务A处理是否正常(分服务A发请求和不发请求的情况)
1.有请求:很快感知下游机器宕机。服务A发请求无回应会超时重传,重传达到一定阈值就认为tcp连接有问题,强制断开连接。
2.不发请求时,依靠tcp协议的keepalive机制感知下游机器不存在,经过2个多小时断开连接。
3.不发请求也没有打开tcp的保活机制,则cache连接一直在,无法感知下游机器的不存在。
情况二:B机器不停服务直接关机情况下(reboot机器),服务A处理是否正常。
1.B机器重启成功服务B没起。服务A给服务B发请求,但是该机器上没有进程绑定该 TCP 报文的目标端口号,那么B机器内核会回RST报文重置该连接。
2.B机器和服务都重启好之后,服务A发请求给下游机器,下游机器B之前的tcp连接信息已经丢失了,所以会回 RST 报文给服务A,服务A收到 RST 报文后,就断开连接。
3.模拟压力情况下服务不停reboot机器,服务A会一直给服务B发请求,由于服务不停机器重启需要几分钟,这时会触发超时重传,在超时重传未达到阈值时,机器重启成功且服务B也启动成功,由于之前的连接信息已经不在,这时服务B收到数据报文会回RST断开连接。之后再有请求就会正常的三次握手建立连接。
4.不发请求时,依靠tcp协议的keepalive机制探测下游机器正常与否,在这种情况下,请求端服务A会收到一个对其保活探测报文的响应,但这个响应是一个重置报文段,请求端服务A会断开连接。
5.不发请求也没有打开tcp的保活机制,则服务A连接一直在即establised状态,无法感知下游机器的重启过程(若此发了请求会同1情况)。
标签:断开连接,机器,请求,宕机,重启,tcp,要点,服务,报文 From: https://www.cnblogs.com/justloving/p/17188339.html