запросы балансировки нагрузки неожиданно не работают иногда на AWS в весенней загрузке приложения - PullRequest
0 голосов
/ 10 января 2020

Обновление Довольно часто я получаю следующий ответ: код ответа 502 и заголовки [awselb / 2.0], а иногда: код ответа 500 и заголовки null

Я предполагаю, что это эластичность Амазонки c балансировка нагрузки с нами?

Оригинальный вопрос

У нас есть серверы, работающие в разных регионах на 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();
    }

}

1 Ответ

0 голосов
/ 10 января 2020

, как кажется, запрошенный URL приводит к некоторому «перенаправлению».

просто идея: может быть, запрошенный URL вызывает некоторое перенаправление на https?

Наверняка я проверю запрошенный URL-адрес и почему он возвращает HTTP-код перенаправления.

...