在我的一个应用程序中,我们使用HttpURLConnection访问另一台服务器 - 应用程序运行良好数月,现在突然所有访问都面临连接超时。零星地,少数调用(500个中的1个)成功,而其他所有调用都失败。该应用程序部署在运行Java 5和Tomcat 5.5的Linux上。我尝试了从命令行使用curl和wget,它们可以正常工作。
另一个使用完全相同代码库的Java进程能够从命令行建立连接。我们已经重启了Tomcat服务器以及机器,但无济于事。我们已经彻底检查了机器,没有阻止进程/防火墙干扰此操作(其他Java进程能够建立连接,这很明显)。
在间歇性的爆发中(比如一天一次),该应用程序能够建立几个连接,然后返回到破损状态。从堆栈跟踪中也没有发现太多明显的问题。
您有任何建议吗?
[更新] 如果应用程序正在运行时服务器DNS更改,则Java将无法检测到并且连接将从旧IP超时(假设IP已关闭)。因此,在CDN的情况下,如果一个节点失效,并被另一个IP替换,则可能会出现问题。
另一个使用完全相同代码库的Java进程能够从命令行建立连接。我们已经重启了Tomcat服务器以及机器,但无济于事。我们已经彻底检查了机器,没有阻止进程/防火墙干扰此操作(其他Java进程能够建立连接,这很明显)。
在间歇性的爆发中(比如一天一次),该应用程序能够建立几个连接,然后返回到破损状态。从堆栈跟踪中也没有发现太多明显的问题。
您有任何建议吗?
[更新] 如果应用程序正在运行时服务器DNS更改,则Java将无法检测到并且连接将从旧IP超时(假设IP已关闭)。因此,在CDN的情况下,如果一个节点失效,并被另一个IP替换,则可能会出现问题。