使用 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"