cod*_*123 4 tomcat spring-boot kubernetes istio
我正在使用带有嵌入式 Tomcat 9.0.36 的 Spring Boot。它在 Kubernetes 中用作 Docker 镜像。最近升级 Envoy 后,我开始遇到异常。
"upstream connect error or disconnect/reset before headers. reset reason: connection termination" with 503 status code
Run Code Online (Sandbox Code Playgroud)
有些人建议将空闲连接超时增加到 60 秒,但在 spring-boot 中我能够找到“连接超时”和“保持活动超时”。我使用下面的代码将它们增加到 5 分钟。
"upstream connect error or disconnect/reset before headers. reset reason: connection termination" with 503 status code
Run Code Online (Sandbox Code Playgroud)
尽管如此,我还是遇到了同样的错误。该应用程序在内部调用另一个同样托管在 Kubernetes 中的服务。我可以在我的服务中看到成功的响应,但之后我看不到任何日志。
我花了一周的时间从应用的角度分析这个问题。我遵循了运营团队建议的几个步骤。
//Earlier (Forwarding same headers received from internal service to UI)
ResponseEntity responseEntity = //Received by calling other APIs;
return responseEntity;
//Now (Dropped headers)
ResponseEntity responseEntity = //Received by calling other APIs;
MultiValueMap<String, String> newHeaders = new LinkedMultiValueMap<>();
if (Objects.nonNull(responseEntity) && Objects.nonNull(responseEntity.getBody())) {
newHeaders.set("Content-type", responseEntity.getHeaders().getContentType().toString());
return new ResponseEntity(responseEntity.getBody(), newHeaders, responseEntity.getStatusCode());
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6721 次 |
| 最近记录: |