【发布时间】:2011-03-01 06:14:12
【问题描述】:
在我的一个应用程序中,我们使用 HttpURLConnection 访问了另一台服务器 - 该应用程序运行了几个月,但现在突然所有命中都面临连接超时。间歇性地,少数调用(500 次中有 1 次)成功,而其他所有调用均失败。该应用程序部署在运行 Java 5 和 Tomcat 5.5 的 Linux 上。我已经从命令行尝试了 curl 和 wget ,它们工作正常。
另一个使用完全相同代码库的 Java 进程能够从命令行建立连接。我们已经重新启动了tomcat服务器以及机器,但无济于事。我们已经彻底检查了机器,没有阻塞进程/防火墙阻碍这一点(显然其他 Java 进程能够建立连接)。
在间歇性突发(比如一天一次)中,应用程序能够建立一些连接,然后返回到中断状态。从堆栈跟踪中也看不到太多。
有什么建议可能会出错吗?
[更新] 如果在应用程序运行时服务器 DNS 发生变化,Java 将不会选择它,并且来自旧 IP 的连接将超时(考虑到 IP 已关闭)。因此,在 CDN 的情况下,如果一个节点出现故障并被另一个 IP 替换,则可能会出现问题。
【问题讨论】:
-
您要连接的服务是您自己的吗?一些服务(尤其是主要的 RSS 服务)会故意阻止那些过于频繁点击它们的用户。
-
是的,我打的服务是我们自己的,没有这样的加载规则:(
标签: java timeout connection httpurlconnection