我正在将我的Nodejs示例应用程序部署到Google App Engine Flexible env,当我使用Google App Engine Flexible应用程序引擎URL (以appspot.com的形式访问API )时,从mobile data发送响应需要花费大约11秒钟的时间,但其他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编辑4
我注意到一种奇怪的行为,当我使用这个应用程序包捕获来捕获流量时,所有的https请求(如果我没有启用SSL代理)和所有Http请求都是在milisecs中执行的,而如果不使用这个应用程序,所有的Http/Https请求都需要11到16秒的延迟。
我不知道怎么回事,但是这里有什么证书吗?
编辑5
下面我附上了网络分析器,在这里延迟15秒。

请帮帮忙
发布于 2018-09-24 11:57:26
这个问题现在已经解决了,这是因为网络服务提供商Bharti,他们的DNS查找占用时间来解决主机名。在显式使用替代DNS (如Google 8.8.8.8 )之后,这个问题就完全解决了。也许这是Airtel与Google的兼容性问题。
发布于 2018-09-04 03:20:47
取决于您正在使用的App以及如何设置扩展,如果您没有现成的实例来提供请求,则总是有一个加载时间。但是,如果您已经做好准备检查,以确保您的实例已经准备好(而不是为请求冷启动),那么就不会有问题了。
您能在日志中找到加载请求或相应的慢请求吗?如果没有,那么这可能是应用程序的一个问题。如果可能的话,不要在应用程序上调用这个API,而是使用两个应用程序(一个已经打开,一个没有)。所以你从这两个应用打电话,如果你注意到已经打开的应用比另一个更快地得到响应,这意味着这是应用本身的一个问题。应用引擎不能确定你的应用程序是否是预先打开的,所以客户端会有任何不同。
===附加信息===
在你的日志里,没有任何延迟。请求进入Google,并在几毫秒内被处理。我肯定会有申请方面的。也许您的应用程序正在从其他来源构建请求URL (第一个请求),从而导致延迟?应用引擎不知道你的应用程序是否被打开,或者它是否在被打开后发送第一个请求,它不能基于它而采取不同的行动。只要你的App实例已经准备好并可用,它就会以同样的方式对待你的请求,不管它是否是你在应用程序打开后的第一个请求。
发布于 2018-09-07 00:30:14
上一次我检查时,我记得我必须设置一个热身请求处理程序,这样谷歌就可以知道实例已经启动并正在运行,并且可以用来响应调用。请记住,代码必须完全位于yaml文件下的处理程序中指定的端点之下。(这不是第一次有人忘记了)
这里是docs https://cloud.google.com/appengine/docs/standard/python/configuring-warmup-requests --这是特定于python的,但是您也可以在文档中检查其他语言,比如Go、Java等等。
如果问题与客户端有关(每次新客户端生成并调用时,它都会得到延迟),那么它很可能是客户端应用程序本身或初始化、注册或DNS解析的问题。
您还可以尝试使用CURL或类似的方式复制请求,并查看是否与那些您看到的延迟。
https://stackoverflow.com/questions/52129452
复制相似问题