有一个socket服务,在开发环境一切正常,在生产环境遇到了奇怪故障。
故障现象为,外部无法访问socket服务,但内部可以访问外部,子网内所有服务器均有这个故障。
由于服务器在高防护机房里,所以该故障耗费很长时间才解决。
调试办法为,在服务器上启动一个进程,比如windows的command,一直ping网络外部的某个网关或服务器,如果上述故障不再出现,可确定为网络设备故障,可以选择更换网卡或网络设备。我遇到这次是ibm服务器和3com路由器,换路由器后故障解决。
另外一次,客户端连接socket服务之后,服务端和客户端程序均显示连接状态,在服务器上netstat 查看也是连接状态,但无法通信,socket实际上断开状态。
但网络中其他服务器一切正常。
调试办法为:外部计算机telnet socket服务,服务器上netstat命令找到该连接,然后外部计算机关机,再次netstat查看,发现状态为连接,那么可以确定为服务器设备故障,更换网卡即可解决。这次是联想万泉服务器。