服务不停宕机或重启后的测试要点

一、 机器环境情况

  机器A和B上分别起着服务A和B,服务A和B之间通过tcp协议通信。

二、测试情况分析

  情况一:B机器不停服务直接关机情况下(shutdown机器),服务A处理是否正常(分服务A发请求和不发请求的情况)

  1.有请求:很快感知下游机器宕机。服务A发请求无回应会超时重传,重传达到一定阈值就认为tcp连接有问题,强制断开连接。

  2.不发请求时,依靠tcp协议的keepalive机制感知下游机器不存在,经过2个多小时断开连接。

  3.不发请求也没有打开tcp的保活机制,则A机器上的服务A的连接一直存在,无法感知下游机器的不存在。

  情况二: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情况)。

  

  

posted @ 2023-03-07 15:45  justloving  阅读(63)  评论(0编辑  收藏  举报