java - 如何在灵活的 GAE 应用程序中正确设置 JVM 选项

标签 java google-app-engine jvm jetty heap-memory

以下是我的 app.yaml 文件,用于 GAE flexible Java 8/Jetty 应用程序。

runtime: java
env: flex
manual_scaling:
  instances: 1

runtime_config:  # Optional
  jdk: openjdk8
  server: jetty9

resources:
  cpu: 2
  memory_gb: 4.0

env_variables:
  JAVA_HEAP_OPTS: -Xms3072M -Xmx3072M

health_check:
  enable_health_check: False

handlers:
- url: /.*
  script: this field is required, but ignored

由于某些原因,在部署应用程序时未使用 JAVA_HEAP_OPTS 值。至少我认为它没有被使用,因为当我通过 SSH 进入 docker 容器并运行以下命令时,内存值要少得多。

java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'

有人可以告诉我发生了什么事或者我需要做哪些不同的事情吗?

谢谢

最佳答案

该变量仅应用于作为 docker 容器入口点运行的 Java 进程。

JAVA_HEAP_OPTS 不是一个神奇的环境变量,它会自动和全局地应用于 docker 容器内 Java 的任何随机执行。难怪为什么在启动自己的独立 Java 进程时看不到任何效果。

看看下面的代码,你就会明白它是如何工作的:

关于java - 如何在灵活的 GAE 应用程序中正确设置 JVM 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49620058/

相关文章:

java - 如何在java中获取所有索引的字段映射

java - OneToMany、ManyToOne 为什么子级中的父级值为空?

google-app-engine - 如何通过命令行与通过 App Engine 部署的带有 Sequelize ORM 的 GCP Cloud SQL 数据库进行交互?

scala - 验证错误: Uninitialized object exists on backward branch/JVM Spec 4. 10.2.4

Android 无法序列化 Kotlin lambda

java - 将简单的 Applet GUI 从 Swing 转换为 JavaFX

java - Wildfly Swarm 在 Docker 容器上连接 Postgres 数据源时出错

javascript - 为什么使用 App Engine Channel API 时需要进行如此多的 XHR 轮询

python-2.7 - 在谷歌应用程序引擎中运行 cron 会出现 404 错误

java - 这些用简单的 Java 代码创建的 JVM 守护线程是什么?