Неустойчивый движок Google Cloud Engine — стандартная среда — задержка (приложение Spring Boot)

#java #spring-boot #performance #google-app-engine #latency

#java #spring-boot #Производительность #google-app-engine #задержка

Вопрос:

Попытка развертывания приложения springboot в Google App Engine (стандартная среда с java11, с максимально возможным экземпляром спецификации). Ниже приведено наше приложение.yaml:

   runtime: java11
  entrypoint: java -jar portal-0.0.1-SNAPSHOT.war
  env: standard
  instance_class: B8
  handlers:
    - url: /.*
      script: ignored field
  manual_scaling:
  instances: 1
  

Функционально приложение работает нормально.

Технически задержка ответа страницы непредсказуема (часто ужасна)! Иногда ответы занимают доли секунды, иногда 10 секунд. Это видно только при развертывании в Google Cloud, а не при локальном тестировании (все запросы занимают менее 1 секунды, развернутые локально). Журналы подтверждают, что время выполнения кода в контроллере незначительно.

После поиска в Google я нашел предложения по запуску форматированного запроса curl. Выполнение этого запроса curl пять раз подряд дало следующие результаты (задержка отображается в time_starttransfer):

  - time_namelookup: 0.015000time_connect: 0.031000time_appconnect:
   0.078000time_pretransfer: 0.078000time_redirect: 0.000000time_starttransfer: 3.844000"time_total: 3.906000
 - time_namelookup: 0.015000time_connect: 0.015000time_appconnect:
   0.062000time_pretransfer: 0.062000time_redirect: 0.000000time_starttransfer: 7.469000"time_total: 7.547000
 - time_namelookup: 0.015000time_connect: 0.031000time_appconnect:
   0.109000time_pretransfer: 0.109000time_redirect: 0.000000time_starttransfer: 0.156000"time_total: 0.219000
 - time_namelookup: 0.015000time_connect: 0.015000time_appconnect:
   0.047000time_pretransfer: 0.047000time_redirect: 0.000000time_starttransfer: 3.781000"time_total: 3.843000
 - time_namelookup: 0.000001time_connect: 0.015000time_appconnect:
   0.062000time_pretransfer: 0.062000time_redirect: 0.000000time_starttransfer: 0.094000"time_total: 0.094000
  

Любые идеи о том, как протестировать или изолировать основную проблему, будут оценены. Также, если кто-нибудь испытывал что-либо подобное (или запускал какие-либо подобные конфигурации без проблем) Мне было бы интересно узнать.

Заранее спасибо.

Ответ №1:

Имейте в виду, что Stackoverflow предназначен для более точных ответов и вопросов. Поскольку ваш вопрос заключается в том, как изолировать проблему на основе доступных инструментов Google, было бы интересно посмотреть, что происходит с App Engine, когда он получает запрос. Например, журналы отслеживания запроса. Чтобы узнать разбивку выполнения при получении запроса.

Кроме того, какие запросы это делает… Например, повлияет ли кэширование / статические файлы или это все типы запросов. Что происходит с другим файлом war? и т.д…

Общая идея заключалась бы в том, чтобы определить, что занимает так много времени, и вы делаете это, просматривая трассировки или файлы, замедляющие выполнение (предполагая, что проблема не в движке приложений, хотя ваша конфигурация ручного масштабирования выглядит хорошо).