为了账号安全,请及时绑定邮箱和手机立即绑定

504 网关超时问题在弹簧启动休息调用重记录(超过 80K)

504 网关超时问题在弹簧启动休息调用重记录(超过 80K)

青春有我 2022-09-14 16:59:18
我得到504网关超时问题春季启动休息调用使用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分钟后才出来。我们如何等待来自其他服务呼叫的响应?我试图使用属性服务器.连接超时=300000在应用程序属性中将超时时间增加到5分钟来解决此问题,但我得到的响应为空。我不确定这是否是正确的方法。请在这个问题上帮助我。
查看完整描述

3 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

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


查看完整回答
反对 回复 2022-09-14
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

server.connection-timeout= #


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


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

    }

}

另外,请参阅


查看完整回答
反对 回复 2022-09-14
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

试试这个

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


查看完整回答
反对 回复 2022-09-14
  • 3 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信