Java google应用程序引擎确定是否在流量分配实例上运行代码

Java google应用程序引擎确定是否在流量分配实例上运行代码,java,google-app-engine,Java,Google App Engine,我试图确定Java8Servlet代码是否在GoogleAppEngine上的流量分配实例上运行。我似乎找不到一个环境变量或任何能提供这些信息的东西。我正在为一个标准(不是flex)实例搜索这个答案 我已经看过了我也尝试过这段代码,但无论是否在流量分配实例上运行,它都会返回“Production”: SystemProperty.environment.value() 任何帮助都将不胜感激。没有环境变量提供您所需的信息。环境变量用于配置目的,例如了解SQL实例的IP或更改生产和开发之间的代码路

我试图确定Java8Servlet代码是否在GoogleAppEngine上的流量分配实例上运行。我似乎找不到一个环境变量或任何能提供这些信息的东西。我正在为一个标准(不是flex)实例搜索这个答案

我已经看过了

我也尝试过这段代码,但无论是否在流量分配实例上运行,它都会返回“Production”:

SystemProperty.environment.value()

任何帮助都将不胜感激。

没有环境变量提供您所需的信息。环境变量用于配置目的,例如了解SQL实例的IP或更改生产和开发之间的代码路径,但它们不能告诉您运行实例的当前状态

谷歌应用引擎提供了配置健康检查的选项。第一种方法定期向给定端点发送HTTP请求以检查响应性,第二种方法旨在了解刚启动的实例是否准备好接受传入的请求。它们都是通过文件配置的

话虽如此,您可以通过发出HTTP请求手动检查您的应用程序,并确认您得到了200 OK代码的响应。请注意,某些端点可能会工作,而其他端点可能会使您的应用程序崩溃,因此我建议您测试所有代码路径,以确保整个应用程序坚如磐石


编辑:添加了有关如何检查实例是否已分配流量的信息


在App Engine的Instances选项卡中,您可以看到每个应用实例所处理的请求及其InstanceId。然后,您可以通过Stackdriver Logging的Logs Viewer选项卡进一步检查您的实例,因为每个连接都已记录。您可以指定一个特定实例,使用标记
protoPayload.instanceId:
过滤日志。给定时间段内出现的日志表明实例正在接收和参与请求,因此它是流量分配的。

您所说的流量分配(或不分配)是什么意思?在控制台上的App Engine->Versions:[链接]()下可以选择将流量分配给实例,感谢您提供的有关活动性和就绪性的信息。也谢谢你对回复200的评论,我理解你的意思。然而,它并没有给出我想要的答案。也就是说,在正在运行的实例中,是否有任何方法可以确定它是否是具有流量分配的实例。我猜我可以使用对生产域名的查询,捕获该查询并使用实例名进行回复,如果只有一个实例正在运行,则可能会提供所需的信息。@user12633319很高兴听到这些信息很有用,请原谅我的误解。我已更新了我的答案,以包括您要求的信息。让我知道我是否能提供进一步的帮助。不幸的是,这不是一个程序化的解决方案,因此,它不能解决核心问题。我认为使用Http方法的方法是有效的,但流量分裂时除外,这不是典型的配置。