【发布时间】:2012-12-30 12:16:43
【问题描述】:
我有一个低负载应用程序,由于加载请求而出现延迟高峰(请求最多需要 10 秒才能返回),如日志所示:
此请求导致为您的应用程序启动一个新进程,从而导致您的应用程序代码首次加载。
这里我假设“新进程”的意思是“新实例”。
为了避免这种情况,我将空闲实例的数量固定为正好 1 个(max=1 和 min=1),因此始终有一个实例在运行(“驻留实例”),GAE 不应启动新实例.计费已启用。
但是,我仍然遇到加载请求。为什么?对此有什么可做的吗?
【问题讨论】:
-
您是否启用了计费功能?
-
是的,我已启用结算功能。
-
您的实例是否正在关闭?我的负载非常低的应用程序经常让其单个实例被调度程序关闭——通常只是在它启动后几分钟。很久以前,我在 GAE Google Groups 中开始了一个关于此的主题。并不孤单。像往常一样,来自谷歌的蟋蟀。 Groups 线程的结论是低 qps 应用程序将遭受异常的调度程序行为。这意味着由于启动时间的原因,Java 对于此类应用程序来说是完全“不行”的。
-
好吧,我总是有一个实例在运行(设置空闲实例的数量 min=1),并且我已将 Pending 延迟设置为最大值(因此请求应该等待而不是触发新实例)。即便如此,GAE 还是决定根据请求启动新实例(为什么?),然后大约需要 10 秒来初始化。