You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot跨服务调用504网关超时问题的排查与解决

解决Spring Boot应用间调用的504网关超时问题

问题背景

我有两个互相调用的Spring Boot REST应用:ProjectA的/test接口有时需耗时1分钟,由ProjectB发起调用。

ProjectA接口代码

@PostMapping(value = "/test")
public ResponseEntity<Map<byte[], List<String>>> getTest(
    @RequestBody ObjectDTO configDto) {
  try {

    HashMap<byte[], List<String>> testMap =
        serviceImpl.test(configDto);

    if (!testMap.isEmpty())
      return new ResponseEntity<>(testMap, HttpStatus.CREATED);
    else return new ResponseEntity<>(testMap, HttpStatus.NO_CONTENT);

  } catch (Exception e) {      
    return ResponseEntity.badRequest().build();
  }
}

ProjectB调用代码

@PostMapping(value = "/getTest")
@Async
public ResponseEntity<Map<byte[], List<String>>> getTest(
    @RequestBody Config config) {
  try {
      Map<byte[], List<String>> val = serviceImpl.testConfig(config);
      return new ResponseEntity<>(val, HttpStatus.CREATED);       
  } catch (Exception e) {
    return ResponseEntity.badRequest().build();
  }
}

问题现象

本地运行正常,但生产环境中总是在6.2秒后返回:

upstream request timeout

已在ProjectB中配置以下超时参数,但未生效:

server.tomcat.connection-timeout=120000
spring.mvc.async.request-timeout=120000

解决方案

通过修改Ambassador的YAML配置文件设置超时参数解决了问题,配置如下:

apiVersion: getambassador.io/v2
kind:  Mapping
metadata:
  name:  ambassador-header-mapping
  namespace: x
spec:
  prefix: /
  timeout_ms: 60000
  service: dummyservice:8080
  ambassador_id: ambassador-x
  headers:
    X-Forwarded-Proto: https
    Host: dummyhost

内容的提问来源于stack exchange,提问作者volkangurbuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:03:04