1

我正在使用 org.springframework.web.client.RestTemplate 发出一个 http 请求,但没有更新它的连接超时,我相信这会使其成为无限请求。但是,每隔一段时间就会发生此 504 网关超时。这可能是由我们请求的服务器引起的,也许他们需要很长时间才能将其切断?这是一种可能性还是更多的是我的目的?

4

2 回答 2

2

这不是你的错。后端服务器无法按时与上游服务器通信。例如,如果 Nginx(可以充当请求网关的代理)正在与几个 glassfish 服务器实例通信并且其中一个发生故障,就会发生这种情况。它无法接收来自已关闭服务器的响应,并且通信将超时,此时它将返回 HTTP 504

我暴露的 REST 服务也遇到过类似的问题。确定行为不端服务的 Qos 并将其排除在流量之外需要几秒钟的时间。此时,当故障服务器仍在为流量提供服务时,网关可能会决定发送一个504. 服务器最终将从流量中删除,一切恢复正常。

于 2014-08-19T17:45:33.717 回答
1

未在您的 Java 环境中设置 HTTP 代理属性。

查看以下内容:https ://docs.oracle.com/javase/8/docs/api/java/net/doc-files/net-properties.html

在该部分Proxies中,它解释了以下内容

  • http.proxyHost (default: ) 代理服务器的主机名或地址

  • http.proxyPort(默认值:80)代理服务器的端口号。

  • http.nonProxyHosts:表示不应通过代理的主机。

  • https.proxyHost、https.proxyPort:同上,但用于 https 并使用 http.nonProxyHosts 作为白名单。

在我自己的情况下,我的格式错误http.nonProxyHosts,它可以用于 HTTP 和 HTTPS 变量。多个主机的分隔符是管道|不是逗号,

例如:

-d http.nonProxyHosts="*.mycompany.com|*.mycompany.net"
于 2017-08-03T19:51:20.543 回答