使用 app.yaml 配置应用

App Engine 应用是使用 app.yaml 文件进行配置的,该文件包含 CPU、内存、网络和磁盘资源设置、扩缩设置以及环境变量等其他常规设置。 您可以选择任何新的 Java 11+ 版本,也可以使用旧版 Eclipse Jetty 9.3 或 Java 8 版本。对于 Eclipse Jetty 9.3 和 Java 8,您可以使用 MavenGradle

app.yaml 文件简介

您可以在 app.yaml 文件中指定 Java 应用的运行时配置,包括版本和网址。该文件充当特定服务版本的部署描述符。

您必须先为应用的 default 服务创建 app.yaml 文件,然后才能为其他服务创建和部署 app.yaml 文件。

以下 app.yaml 演示了如何为 Java 8、11 和 17 及更高版本配置应用。请注意,您必须更新 app.yaml 文件才能使用新版本。如需详细了解如何使用新版本,请参阅 Java 运行时

版本 17 及更高版本

runtime: java
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "21"
handlers:
- url: /.*
script: this field is required, but ignored

manual_scaling:
instances: 1

版本 11

runtime: java
env: flex
runtime_config:
operating_system: "ubuntu18"
runtime_version: "11"
handlers:
- url: /.*
script: this field is required, but ignored

manual_scaling:
instances: 1

版本 8

runtime: java
env: flex

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

您可能只需在相应的 app.yaml 文件中定义几个元素,具体取决于应用服务的复杂程度。以下示例演示了柔性环境中的简单 Java 应用可能需要定义的元素:

您可以为 app.yaml 文件指定一个独特的名称,但还必须使用部署命令指定该文件名。例如,如果您将 app.yaml 文件命名为 service-name-app.yamlapp.flexible.yaml,则必须使用下列任一命令部署您的应用:

gcloud app deploy service-name-app.yaml
gcloud app deploy app.flexible.yaml
如需详细了解如何在应用中设计多个服务和 app.yaml 文件的结构,请参阅设计 Web 服务的结构

所有配置元素

如需查看此配置文件中所有受支持的元素的完整列表,请参阅 app.yaml 参考文档

启用 Java 虚拟机指标收集

您可以配置 Java 版 App Engine 柔性环境以收集 Java 虚拟机 (JVM) 进程的常见指标。这些指标通过 Cloud Monitoring 使用的 JVM 监控插件收集。如需查看 App Engine 的指标的完整列表,请参阅 Google Cloud 指标指南

如果您想为应用收集以下 JVM 指标,请执行以下操作:

  • appengine.googleapis.com/flex/instance/jvm/gc/count
  • appengine.googleapis.com/flex/instance/jvm/gc/time

您需要在 app.yaml 的环境变量中设置以下 JMX 系统属性,并部署应用。

JAVA_USER_OPTS: "-Djava.rmi.server.hostname=172.17.0.1 -Dcom.sun.management.jmxremote.port=10403 -
Dcom.sun.management.jmxremote.rmi.port=10403 -Dcom.sun.management.jmxremote.local.only=false -
Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"