Spring Boot-请求超时504



我有两个Spring Boot REST应用程序,它们相互交谈。

ProjectA,getTest休息服务有时需要一分钟。它从项目B调用。

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

调用上面API的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();
}
}

它在本地工作,但当我在prod上运行时,它总是在6.2s后返回:

upstream request timeout

我已经在项目B上用下面的配置增加了属性的超时时间,但没有起作用。

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

所以问题是如何修复504网关超时错误

更新

通过在下面的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

看起来您有额外的代理服务器,它们有自己的timouts配置。

相关内容

  • 没有找到相关文章

最新更新