使用捆绑服务将 App Engine 标准应用程序从 Java 8 迁移到 Java 11 后的内存问题

问题描述 投票:0回答:0

在App Engine Standard环境中有一个应用程序需要从Java 8运行时迁移到Java 11运行时。决定采用最简单的方法并使用捆绑服务迁移到 Java 11,即部署仍然使用

appengine-web.xml
而不是
app.yaml
.

问题如下:使用 Java 8,App Engine 实例通常占用其可用内存的 75-80%,并且从未发生内存错误。自从迁移到带有捆绑服务的 Java 11 后,实例占用率超过 90%,即使对于非常轻的请求,错误

"Exceeded soft memory limit of ... ... after servicing X requests total"
也经常发生。

Q1:仅迁移版本的应用程序出现这些内存问题的原因是什么?

Q2:为什么迁移后的应用程序没有向 Cloud Profiler 发送分析信息?

我对内存问题的唯一假设是存在内存泄漏。因此,我尝试按照文档中的指南来分析应用程序:

  1. 将以下内容添加到 appengine-web.xml:
<env-variables>
    <env-var name="GAE_PROFILER_MODE" value="cpu,heap" />
</env-variables>
  1. 为服务帐户提供 Cloud Profiler 权限。

但是,Cloud Profiler 页面仍然显示一个欢迎页面,其中包含没有配置分析代理的消息。

编辑:将实例类更改为更高的类不是一种选择。

google-app-engine java-8 migration java-11 google-cloud-profiler
© www.soinside.com 2019 - 2024. All rights reserved.