1、问题
某项目将原部署与上海机房的一个服务迁移至北京机房,当服务在北京部署后,测试发现从上海机房服务器的应用连不上该在北京机房新部署的服务,而北京同一机房内其他服务器上连接则正常。Ping测试的网络正常。telnet测试时发现两个机房间的服务器连上北京机房服务的端口需要近10秒钟,但从管理员的PC上telnet却正常。
那么问题来了,为什么telnet端口花了近10秒钟? 抓包看看吧。
2、分析
从抓包结果看在客户端在TCP的握手时对端在客户端重发了第三次SYN包后才响应。客户端在发送了第一个SYN包(图上第一个包)后没有收到ACK应答,于是3秒后重发SYN包(图上第二个包),等待6秒后没有收到应答,再次重发SYN包(图上第三个包),这次很快收到了对端的ACK应答(图上第四个包),从第一个SYN包到三次握手成功,总共花了9秒多时间。
同时从对端的抓包结果来看,对端只收到一个SYN包,并马上响应了。
那么现在的问题是前两次发送的SYN包在传送过程中被谁丢弃了?
结合管理员先前的测试,从其PC上telnet正常,只有在上海机房的服务器上telnet有问题,似乎问题是出在上海机房的网络上。在上海机房的该服务器上测试到其他服务器的的连接情况,测试结果发现只有到北京机房的某些服务器有问题,并且到其他的机房没有发现问题。
排查至此,重新定位问题点,不应该是两端一个点的问题,应该是两端某些特定的情况造成连接问题。比较北京有问题和没有问题服务器的网络上和系统上差异,发现有问题的服务器都是在DDOS防护设备防护内。
重新测试,并且在