我有一个低负载/零星负载的应用程序,启动新实例(大约 10 秒)导致的延迟远远超过处理我的请求所需的时间,这通常在 500 毫秒内完成。
所以为了避免新实例的产生(“加载请求”)导致的延迟峰值,我做了以下两个设置:
- 设置 min idle instances = max idle instances = 1,确保始终有一个实例在运行(一个实例足以处理我的流量);和
- 将挂起的延迟设置为 15 秒,以便 GAE 等待最多 15 秒以使一个常驻实例空闲而不是启动一个新实例。
计费已激活。但是,GAE 仍会启动新实例,从而导致无法接受的延迟。这是为什么?
在日志中我可以看到我的请求总是在不到 500 毫秒内返回;一个请求不可能排队长达 15 秒。
我能做些什么呢?非常感谢任何帮助。
更新:我的解决方案是设置一个每 5 分钟发出一次请求的 cron 作业,以始终运行动态实例。事实证明(见下面的答案),空闲实例是为疯狂的负载峰值保留的,而不是我 99% 的时间处于低负载场景。