Медленное время отклика от экземпляра Amazon Ec2 - PullRequest
0 голосов
/ 25 марта 2019

Я использую приложение 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);
...