当前位置: 首页 > 知识库问答 >
问题:

由于内存限制,部署在Google云应用引擎中的Spring Boot应用程序未启动

韦澄邈
2023-03-14

我对部署在Google云应用程序引擎中的Spring Boot应用程序有问题。该应用程序是一个使用JPA和JWT的API,并连接到存储在Google Cloud SQL中的MySQL数据库。

问题是应用程序由于内存限制而被卡住。每次请求后,我都会在日志中看到以下消息:

  • 在总共为0个请求提供服务后,超过了256 MB的软内存限制,为298 MB。考虑在App中设置更大的实例类。亚马尔
  • 此请求导致为应用程序启动一个新进程,从而导致首次加载应用程序代码。因此,与应用程序的典型请求相比,此请求可能需要更长的时间并使用更多的CPU
  • 处理此请求时,发现处理此请求的进程占用了太多内存,因此终止。这可能会导致应用程序的下一个请求使用新进程。如果您经常看到此消息,则应用程序中可能存在内存泄漏,或者可能正在使用内存不足的实例。考虑在App中设置更大的实例类。亚马尔

我试图修改文件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个答案

裴心水
2023-03-14

对于任何来这里的人:

我让它在不同的环境下工作。我没有使用flex,而是按照这里解释的配置,用java8将环境更改为标准。奇怪的是,现在这个应用程序比以前消耗了更多的内存(大约300Mb),但现在它的工作没有问题。请注意,app.yaml不再使用,现在应用程序被部署为WAR。

谢啦

 类似资料:
  • 有人知道我们如何使用超过12个并发连接从App Engine到Cloud SQL吗? 我们发现留档说:“在标准环境中运行的每个App Engine实例与Google CloudSQL实例的并发连接不能超过12个。” 我们正在使用 Java for App Engine 使用 Hibernate...连接池指出它不应该在生产环境中使用,但如果我们禁用池,我们将达到最大连接数。

  • 我们在谷歌应用引擎(GAE)上有一个长期运行的服务。然而,过了一会儿,我们开始得到图像中的错误。代码没有变化。我不明白为什么我们会有以前没有的问题。 2020-01-05 08:31:32.704UTC-8在总共服务0个请求后,超过了2048 MB的软内存限制(2068 MB)。考虑在app.yaml.中设置一个更大的实例类 2020-01-05 08:31:32.705UTC-8此请求导致为应用

  • 我正在编写一个简单的服务,从多个来源获取数据,将其存储在一起,然后使用GoogleAPI客户端将其发送到GoogleSheet。Easy peasy很好用,数据没有那么大。 问题是,在构建api服务(即

  • 在python上的GoogleAppEngine中,我遇到了以下错误:在服务了总共2个请求后,超过了128 MB的软私有内存限制,达到了157 MB。我尝试使用以下命令来解决这个问题。上下文=ndb。获取上下文()和上下文。设置缓存策略(False)。我把这个方法放在appengine\u配置中。py,也在应该处理请求的处理程序中。我想知道是否还有其他地方可以放置这个命令,或者我是否应该总共使用一

  • 我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud

  • 我正在google cloud app engine中部署我的nodejs应用程序,但它给出了一个错误。该请求导致为您的应用程序启动了一个新进程,从而导致您的应用程序代码首次加载。因此,与应用程序的典型请求相比,此请求可能需要更长的时间并使用更多的CPU。-提出请求时。 我也看到了一些stackoverflow的答案,但它们对我不起作用。 我的应用程序。我有这个配置 运行时:nodejs10 有谁