Я использую приложение Java / Spring с интерфейсом Angular6.В бэкэнде Spring я вызывал другой API через http.но он примерно в 6 раз медленнее, чем ожидалось, чтобы получить ответ ...
Изоляция вызова API, который я получаю:
Локально выполняю ту же настройку (Spring, Tomcat 8.5) с моей машины-разработчика: 10-12 секунд локально через почтальона: 10-12 секунд локально через cUrl: 10-12 секунд Использование cUrl с консоли в экземпляре AWS EC2 10-12 секунд.
Вызов по назначению (Spring работает в Tomcat)в экземпляре AWS EC2: 60-75сек.
Попытка изменить http-ответ Native Spring (ResponseEntity postForEntity) на OkHttp без изменения результата.Запрос и ответ Api - это крошечная Json-строка, но APi медленный, поэтому время отклика около 10 секунд является нормальным.
Поскольку с Tomcat или java на EC2, похоже, что-то не так.Это могут быть какие-то параметры, которые я пропустил?или что еще я могу попытаться изолировать и решить проблему?
Количество отправленных и восстановленных данных тривиально (отправка ~ 350 байт, получение меньше)
Это просто вызовAPI, который занимает много времени.
logger.debug("CallApi start");
start = System.currentTimeMillis();
try {
ObjectMapper mapper = new ObjectMapper();
String s = mapper.writeValueAsString(apiCalcDTO.getInput());
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(120, TimeUnit.SECONDS)
.writeTimeout(120, TimeUnit.SECONDS)
.readTimeout(120, TimeUnit.SECONDS)
.build();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, body);
Request request = new Request.Builder()
.url("http://www.example.com/api/1.0/xxx")
.post(body)
.addHeader("Content-Type", "application/x-www-form-urlencoded")
.addHeader("cache-control", "no-cache")
.build();
Response response = client.newCall(request).execute();
elapsed = System.currentTimeMillis() - start;
logger.debug("CallApi time = " + elapsed);