为什么在Google App Engine中始终只有第一个请求才会出现11秒的延迟?

Sud*_*aur 8 google-app-engine android node.js google-cloud-platform

我正在将我的Nodejs示例应用程序部署到Google App Engine Flexibleenv,当我使用google应用程序引擎URL时,appspot.com我会花费大约11秒来发送我的响应mobile data,但其他API正在以milisecs发送响应.

此外,时间延迟只发生在我打开我的Android应用程序并在所有请求正常时间之后向服务器发送请求时,当我再次打开应用程序并向服务器发送请求时再次出现延迟.

编辑 - 我发现了

这可能是在您的应用程序仍在启动或预热实例以服务请求时引起的,并且可以称为加载延迟.为了避免这种情况,您可以实现健康状况检查处理程序,如准备检查,以便您的应用程序只在准备就绪时才会收到流量

这就是为什么我在我的日志中readiness检查了有时在周围1 sec 有时进行检查的原因200 ms

在此输入图像描述

任何人都可以告诉我在预热实例时有什么不对,因为我不认为冷启动时间会导致这个问题.

编辑2

我也尝试设置,min_num_instances: 2以便一旦加载至少我的2个实例将再次无法启动,但事情是延迟再次相同.

编辑3

runtime: nodejs
#vm: true
env: flex

automatic_scaling:
  min_num_instances: 2
  max_num_instances: 3
Run Code Online (Sandbox Code Playgroud)

编辑4

我注意到一个奇怪的行为,当我使用此应用程序Packet Capture捕获流量,然后所有https请求(如果我没有启用SSL代理)和所有Http请求正在milisecs执行而不使用此应用程序所有Http/Https请求正在延迟11-16秒.

我不知道怎么样,但这里有任何证书问题吗?

编辑5

下面我已经连接了Network Profiler,延迟时间是15秒

在此输入图像描述

请帮忙

Yin*_* Li 5

根据您使用的是哪个App Engine以及如何设置缩放比例,如果您没有准备就绪的实例来处理请求,那么总会有加载时间。但是,如果您有准备检查以确保您的实例已经准备好(并且没有为请求冷启动),那么应该没有问题。

您可以在日志中找到加载请求或任何相应的慢请求吗?如果没有,则可能是该应用程序存在问题。如果可能的话,不要在您的应用程序上调用此API,而是从两个应用程序(一个已经打开,一个没有打开)执行此操作。因此,您从两个应用程序都发出了呼叫,并且如果发现已经打开的一个应用程序比另一个应用程序得到更快的响应,则意味着这是应用程序本身的问题。App Engine无法确定您的应用程序是否已预先打开,因此任何区别都将在客户端。

===其他信息===

在您的日志中,没有任何延迟。请求进入Google,并在几毫秒内得到处理。我敢肯定,有一些应用程序方面。也许您的应用正在从其他来源构造请求URL(第一个请求),从而导致延迟?App Engine不知道您的应用程序是否已打开,或者在打开后是否正在发送第一个请求,因此无法基于它采取不同的行动。只要您的App Engine实例就绪且可用,它将以相同的方式处理您的请求,无论它是打开应用程序后的第一个请求。


Sud*_*aur 1

问题现已解决,发生这种情况是因为 Bharti Airtel 网络服务提供商,他们的 DNS 查找需要时间来解析主机名。在明确使用 Google 等替代 DNS 后,8.8.8.8问题得到了彻底解决。可能是 Airtel 与 Google Cloud 的兼容性问题。