gpt4 book ai didi

java - Java 中 HttpURLConnection 中荒谬的连接超时

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:58:18 26 4
gpt4 key购买 nike

在我的一个应用程序中,我们使用 HttpURLConnection 访问了另一台服务器 - 该应用程序运行良好了几个月,现在突然间所有访问都面临连接超时。间歇性地,一些调用(500 中有 1 个)成功,而其他所有调用都失败。该应用程序部署在运行 Java 5 和 Tomcat 5.5 的 Linux 上。我已经从命令行尝试了 curlwget,它们工作正常。

另一个使用完全相同代码库的 Java 进程能够从命令行建立连接。我们已经重新启动了 tomcat 服务器和机器,但无济于事。我们已经彻底检查了机器,没有阻止进程/防火墙阻碍这一点(显然其他 Java 进程能够建立连接)。

在间歇性爆发(比如每天一次)中,应用程序能够建立一些连接,然后返回到中断状态。从堆栈跟踪中也看不出多少。

有什么地方可能出错的建议吗?

[更新] 如果在应用程序运行时服务器 DNS 发生变化,Java 将不会选择它并且旧 IP 的连接将超时(考虑到 IP 已关闭)。因此,在 CDN 的情况下,如果一个节点宕机并被另一个 IP 替换,则可能会出现问题。

最佳答案

我有同样的问题,这是由 HttpURLConnection 对 keepalive 的处理引起的。当我们通过设置此系统属性禁用 keepalive 时,问题就消失了,

http.keepAlive=false

我们有另一个与防火墙相关的问题。如果目标 URL 被防火墙阻止,则需要很长时间才能超时(超过 2 分钟)。我们必须在另一个线程中运行所有 HttpURLConnection,以便我们可以在几秒钟后中断它。

关于java - Java 中 HttpURLConnection 中荒谬的连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2999146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com