当前位置: 首页 > 知识库问答 >
问题:

504 网关超时问题在Spring启动Rest调用重记录(超过 80K)

姚建树
2023-03-14

我得到504网关超时问题Spring Boot Rest调用使用HTTP GET调用重记录(超过80K),我调用其他服务获取数据使用RestTemplate对象resClient,代码如下:

public ResponseEntity<String> getData(String endPointUrl, Map<String, Object> parameterMap, String smToken) throws Exception {
        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON));
        headers.add("Cookie", smToken);
        //headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<Map<String, Object>> entity = new HttpEntity<Map<String, Object>>(parameterMap, headers);
        ResponseEntity<String> responseEntity = null;
        try {
            SSLUtil.turnOffSslChecking();
            LOGGER.info("Start call to end point : " +endPointUrl+ " at :"+ (new Date().toString()) );
            //resClient.getMessageConverters()
            //.add(0, new StringHttpMessageConverter(Charset.forName("UTF-8")));
            responseEntity = resClient.exchange(endPointUrl, HttpMethod.POST, entity,String.class);
            LOGGER.info("End of call to end point : " +endPointUrl+ " at :"+ (new Date().toString()) );
            LOGGER.debug("Response from end point: " + responseEntity);
        } catch (Exception e) {
            LOGGER.error("Exception while making a http call to " + endPointUrl,e);
            throw e;
        }

        return responseEntity;
    }

在调试过程中,我看到了来自其他服务调用的响应,它需要4分钟以上的时间,而不是等待3分钟后才得到响应。我们如何让它等待来自其他服务调用的响应?

我尝试使用application.properties中的属性server . connection-time out = 300000将超时时间增加到5分钟来解决此问题,但我得到了空响应。我不确定这是否是正确的方法。请在这个问题上帮助我。

共有3个答案

钱言
2023-03-14

试试这个

@Bean
    public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) 
    {
        return restTemplateBuilder
           .setConnectTimeout(...)
           .setReadTimeout(...)
           .build();
    }
慕云
2023-03-14

server.connection超时

连接器在关闭连接之前等待另一个HTTP请求的时间。未设置时,将使用连接器的容器特定默认值。

Use a value of -1 to indicate no (that is, an infinite) timeout. (might be bad fix)

OR尝试从应用程序设置它

@SpringBootApplication
public class Application {
    public static void main(String[] args) throws Exception {
        System.setProperty("server.port","8080"));
        System.setProperty("server.connection-timeout","300000");
        System.setProperty("server.tomcat.max-threads","yourValue"); //in-case if you want to chaneg number of thredas 
        SpringApplication.run(Application.class, args);
    }
}

另外,请参考此内容

廉元龙
2023-03-14

504网关超时问题通常由代理服务器引发,这意味着服务器正在关闭连接。如果客户端关闭连接,那么您将收到连接超时错误。

 类似资料:
  • 你知道是怎么回事吗?

  • 我在一个Spring boot项目中工作,有一个请求返回网关超时504。我可以增加这个超时吗?这是一个属性,我可以改变在独立的完整。xml?我使用的是wildfly服务器。 请求在1分钟内触发两次,每次触发时间为1分钟。

  • 很多次,当我试图在UI中打开某些DAG的树状视图或任务持续时间页面时,我得到错误:504网关超时。有时在那之后,我甚至无法打开包含DAG列表的页面。你知道这个问题可能来自哪里吗? 运行Airflow的机器的CPU和内存似乎很好,我使用RDS作为元数据。 谢谢!

  • 我正在尝试使用Nginx在Ubuntu16.4服务器上托管Django1.11应用程序。但是在运行服务器之后,我得到了 *1从上游读取响应标头时上游超时(110:连接超时),客户端:118.179.95.25,服务器:18.136.204.142,REQU$ 2019/07/24 18:13:13[错误]15221#15221:*1从上游读取响应标头时上游超时(110:连接超时),客户端:118.

  • /etc/httpd/conf.d/fcgid.conf 我有...见下文 我已经尽力做到最好了。为了测试这一点,我只是运行下面的函数。 在与支持人员聊天后,我被告知需要编辑nginx.conf,并被转到以下帖子http://blog.secaserver.com/2011/10/nginx-gateway-time-out/ 在服务器设置中找不到任何值。client_header_timeout

  • 问题内容: 我在synology nas上将nginx 1.12和php-fpm 7.1作为单独的docker容器运行,并且如果php- script运行时间超过60s,则会收到504 Gateway错误。我已经尝试了几个nginx配置参数,但是错误仍然存​​在。 这是我实际的nginx配置: php-testscript: 60秒后,浏览器显示504网关超时。php脚本仍在运行,并且还在将文本写