在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 发送分析信息?
我对内存问题的唯一假设是存在内存泄漏。因此,我尝试按照文档中的指南来分析应用程序:
<env-variables>
<env-var name="GAE_PROFILER_MODE" value="cpu,heap" />
</env-variables>
但是,Cloud Profiler 页面仍然显示一个欢迎页面,其中包含没有配置分析代理的消息。
编辑:将实例类更改为更高的类不是一种选择。