在我的一个应用程序中,我们使用 HttpURLConnection 访问了另一台服务器 - 该应用程序运行了几个月,但现在突然所有命中都面临连接超时。间歇性地,少数调用(500 次中的 1 次)成功,而其他所有调用均失败。该应用程序部署在运行 Java 5 和 Tomcat 5.5 的 Linux 上。我已经从命令行尝试了curl和wget ,它们工作正常。
另一个使用完全相同代码库的 Java 进程能够从命令行建立连接。我们已经重新启动了tomcat服务器以及机器,但无济于事。我们已经彻底检查了机器,没有阻塞进程/防火墙阻碍这一点(显然其他 Java 进程能够建立连接)。
在间歇性突发(比如每天一次)中,应用程序能够建立一些连接,然后返回到中断状态。从堆栈跟踪中也看不到太多。
有什么建议可能会出错吗?
[更新] 如果在应用程序运行时服务器 DNS 发生更改,Java 将不会选择此内容,并且旧 IP 的连接将超时(考虑到 IP 已关闭)。因此,在 CDN 的情况下,如果一个节点出现故障并被另一个 IP 替换,则可能会出现问题。