第三方切换服务器ip,导致本系统连接不上,还好有应急方案,重启了系统后正常。
本系统是改造的ibm mq来连接第三方,使用的短连接,本公司的域名解析器,hosts没配置,本来以为不需要跟着重启,结果差点提桶跑路。
由于其他系统正常,说明是本系统原因,跟踪域名解析,发现调用了jdk的Socket与InetAddress。
Socket构造方法:
public Socket(String host, int port) throws UnknownHostException, IOException{ this(host != null ? new InetSocketAddress(host, port) : new InetSocketAddress(InetAddress.getByName(null), port), (SocketAddress) null, true); }
InetAddress.getAllByName0,域名查询时,优先查询缓存,本地debug是30秒,看了服务器是一样的配置,但是生产环境连接不上超过了3分钟。
测试阶段,第三方只是切换域名,ip没变。由于多个项目共用一个测试环境,还要配置域名解析器,第三方不怎么想配合。本地ping不到域名,就修改hosts测了下,未发现问题。后来分析还原hosts后可能会发现问题,那样使用的还是hosts里的ip。
有可能是开通网络时配置的长连接,运维人员不知道,生产环境难以验证。