春季启动休息中的 504 网关超时问题要求大量记录(超过 80K)



我收到 504 网关超时问题 Spring 启动休息调用使用 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 分钟后出现。我们如何让它等待来自其他服务呼叫的响应?

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

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

server.connection-timeout= #

连接器在关闭 连接。如果未设置,则连接器的容器特定默认值 被使用。

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

或尝试从应用程序设置它

@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);
    }
}

另外,参考这个

试试这个

@Bean
    public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) 
    {
        return restTemplateBuilder
           .setConnectTimeout(...)
           .setReadTimeout(...)
           .build();
    }

相关内容

  • 没有找到相关文章

最新更新