Обновление Довольно часто я получаю следующий ответ: код ответа 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();
}
}