java - 在 Spring Boot 应用程序中,负载均衡器请求有时会在 AWS 上意外失败

标签 java amazon-web-services spring-boot okhttp amazon-elb

更新 我经常收到以下回复: 响应代码 502 和 header [awselb/2.0] 有时: 响应代码 500 和 header null

我认为这是亚马逊的弹性负载均衡器在搞乱我们?

原始问题

我们的服务器在 AWS 上的不同区域运行,它们偶尔会互相发出 GET 请求以检查其状态。我们还有外部监控服务检查相同的调用。

有时(太频繁)我们会收到 Http 3XX 响应,但我们从日志和其他监控服务中知道所有服务器都运行良好。我们还看到同一网络上的服务器有类似的行为。

我想知道我们的 http 客户端是否配置不当或者某个地方存在错误。请参阅下面的代码了解我们用来发送请求的服务。有什么建议么?我们使用 com.squareup.okhttp3 版本 3.14.2。

(很抱歉在没有更好地隔离原因的情况下发布问题,只是希望其他人以前经历过此问题并找到解决方案。)

import okhttp3.*;

@Service
public class HttpClientService {
    public static final MediaType JSON_MEDIA_TYPE = MediaType.parse("application/json; charset=utf-8");

    private OkHttpClient client = null;
    private long httpClientTimeoutSeconds = 10;

    @PostConstruct
    public void init() {
        this.client = new OkHttpClient.Builder()
                .connectTimeout(httpClientTimeoutSeconds, TimeUnit.SECONDS)
                .retryOnConnectionFailure(true)
                .connectionPool(new ConnectionPool(20, 5, TimeUnit.MINUTES))
                .build();
    }

    public Response get(String url) throws IOException {
        Request.Builder requestBuilder = new Request.Builder()
                .header("accept", "application/json")
                .header("accept-encoding", "gzip, deflate")
                .header("content-type", "application/json");
        Request request = requestBuilder
                .url(url)
                .get()
                .build();
        return client.newCall(request).execute();
    }

}

最佳答案

看起来请求的网址会导致一些“重定向”。

只是一个想法: 也许请求的 url 会产生一些到 https 的重定向?

我肯定会检查请求的 url 以及为什么它返回一些重定向 http 代码。

关于java - 在 Spring Boot 应用程序中,负载均衡器请求有时会在 AWS 上意外失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59682039/

相关文章:

java - 如何在 jar 文件中存储高分

Java 作为 Java 的脚本语言?

amazon-web-services - 使用 SublimeText SFTP 上传到 EC2 CentOS 实例

java - Mockito 使用 Mockito.mockStatic() 模拟静态 void 方法

java - Gradle 任务依赖于一个不应该存在的文件

java - 使用 Socket 实现 HTTP 服务器 - 如何让它永远运行?

amazon-web-services - AWS-Elastic Beanstalk CLI-如何列出/更改配置文件

amazon-web-services - 将特定 IAM 角色列入白名单的存储桶策略

java - Spring:从命令行覆盖一个 application.property

java - Spring JavaConfig : Add mapping for custom Servlet