我正在尝试确定 Java8 Servlet 代码是否正在 Google App Engine 上的流量分配实例上运行。我似乎找不到环境变量或任何可以提供该信息的东西。我正在寻找标准(非弹性)实例的答案。
我看过here 。
我也尝试过此代码,但无论是否在流量分配的实例上运行,它都会返回“Production”:
SystemProperty.environment.value()
如有任何帮助,我们将不胜感激。
最佳答案
没有环境变量可以提供您正在查找的信息。环境变量用于配置目的,例如了解 SQL 实例的 IP 或更改生产和开发之间的代码路径,但它们无法告诉您正在运行的实例的当前状态。
Google App Engine 提供配置 liveness and readiness 的选项健康检查。第一个定期向给定端点发送 HTTP 请求以检查响应能力,第二个旨在了解刚刚启动的实例是否准备好接受传入请求。它们都是通过 app.yaml 配置的文件。
话虽如此,您可以通过发出 HTTP 请求来手动检查您的应用程序,并确认您收到 200 OK 代码作为响应。请注意,某些端点可能会工作,而其他端点可能会使您的应用程序崩溃,因此我建议您测试所有代码路径,以确保整个应用程序坚如磐石。
<小时/>编辑:添加了有关如何检查实例是否已分配流量的信息。
在 App Engine 的“实例”选项卡中,您可以查看每个应用程序实例所处理的请求及其 InstanceId。然后,您可以通过 Stackdriver Logging 的“日志查看器”选项卡进一步检查您的实例,因为每个连接都已被记录。您可以使用标签 protoPayload.instanceId:<YOUR-INSTANCE-ID>
指定过滤日志的特定实例。 。给定时间范围内日志的存在表明实例正在接收和处理请求,因此已分配流量。
关于java - 谷歌应用程序引擎确定代码是否在流量分配的实例上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59547009/