Приложение Spring Boot, развернутое в Google Cloud App Engine, не запускается из-за ограничения памяти - PullRequest
1 голос
/ 04 мая 2020

У меня проблема с приложением Spring Boot, развернутым в Google Cloud App Engine. Приложение представляет собой API, который использует JPA и JWT и подключено к базе данных MySQL, хранящейся в Google Cloud SQL.

. Проблема в том, что приложение застревает из-за ограничения памяти. После каждого запроса я получаю следующие сообщения в журнале:

  • Превышен предел мягкой памяти 256 МБ с 298 МБ после обслуживания всего 0 запросов. Рассмотрите возможность установки более крупного класса экземпляра в app.yaml.
  • Этот запрос вызвал запуск нового процесса для вашего приложения и, таким образом, вызвал загрузку кода вашего приложения в первый раз. Таким образом, этот запрос может занять больше времени и использовать больше ресурсов ЦП, чем обычный запрос для вашего приложения.
  • При обработке этого запроса было обнаружено, что процесс, обработавший этот запрос, использует слишком много памяти и был прерван. Это может привести к использованию нового процесса для следующего запроса к вашему приложению. Если вы часто видите это сообщение, возможно, у вас утечка памяти в приложении или вы используете экземпляр с недостаточным объемом памяти. Подумайте об установке большего экземпляра класса в app.yaml.

Я попытался изменить файл src / main / appengine / app.yaml , чтобы установить другую конфигурацию ( с большей памятью) но я не вижу никакой разницы после каждого изменения. Как будто этот файл был проигнорирован.

Это мой текущий app.yaml :

runtime: java
env: flex
runtime_config:
  jdk: openjdk8
env_variables:
  SPRING_PROFILES_ACTIVE: "gcp,mysql"
  # JAVA_GC_OPTS: -XX:+UseSerialGC
  # JAVA_USER_OPTS: -XX:MaxRAM=200m

# With -XX:+UseSerialGC This will perform garbage collection inline with the thread allocating the heap memory instead of a dedicated GC thread(s)
# With -Xss512k This will limit each threads stack memory to 512KB instead of the default 1MB
# With -XX:MaxRAM=72m

handlers:
- url: /.*
  script: this field is required, but ignored
beta_settings:
  cloud_sql_instances: guitar-tab-manager-api:europe-west3:guitar-tab-manager-db

# manual_scaling:
#   instances: 1

# instance_class: F4
# manual_scaling:
#   instances: 1

# instance_class: F2
# basic_scaling:
#   max_instances: 5
#   idle_timeout: 10m

instance_class: F2
# automatic_scaling:
#   target_cpu_utilization: 0.65
#   min_instances: 5
#   max_instances: 100
#   min_pending_latency: 30ms  # default value
#   max_pending_latency: automatic
#   max_concurrent_requests: 50

Я пытался применить различные конфигурации, но, похоже, ничего не работает. Может быть, кто-то может помочь. Заранее спасибо.

1 Ответ

1 голос
/ 05 мая 2020

Для всех, кто придет сюда:

Я получил его в другой среде. Вместо flex я изменил среду на стандартную с java8, следуя конфигурации, объясненной здесь . Странно то, что теперь приложение потребляет больше памяти, чем раньше (около 300 Мб), но теперь оно работает без проблем. Обратите внимание, что app.yaml больше не используется, и теперь приложение развернуто как WAR.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...