org.springframework.web.client.RestTemplate 504网关超时

时间:2014-08-19 17:38:50

标签: java resttemplate http-status-code-504

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

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

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

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

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

就我自己而言,我的http.nonProxyHosts格式错误,可以用于HTTP和HTTPS变量。多个主机的分隔符是管道| NOT 是逗号,

例如:

-d http.nonProxyHosts="*.mycompany.com|*.mycompany.net"