所以我已经使用应用程序引擎很长一段时间了,没有任何问题。我知道,如果应用程序有一段时间没有被访问者点击,那么实例将关闭,并且第一个访问该网站的访问者将有几秒钟的延迟,同时新实例启动。
然而,最近这些实例似乎只在很短的时间内保持活动状态(有时不到一分钟),如果我已经启动并运行了 1 个实例,并且我刷新了应用程序网页,它仍然会启动另一个实例(它启动的页面是最小的主页 HTML,不需要太多的 CPU/内存)。查看我的日志,它不断启动新实例,以前从未出现过这种情况。
关于我应该注意什么的任何提示,或者关于为什么会发生这种情况的任何想法?
另外,我正在使用 Python 2.7、线程安全、Python 预编译、预热入站服务、NDB。
Update:
因此,我将我的应用程序更改为至少有 1 个空闲实例,希望这能够解决问题,但即使一个常驻实例已经在运行,它仍然会启动新实例。因此,当只有 1 个常驻实例(除了我之外,我没有收到任何流量),并且我转到应用程序上的另一个页面时,它仍在启动一个新实例。
此外,正如 koma 指出的那样,我将待处理延迟更改为 1.5 秒,但这似乎没有帮助。
实例的内存使用量始终在 53MB 左右,当被调用的页面没有做太多事情时,这是令人惊讶的。我正在使用 F1 前端实例类,其限制为 128,但无论哪种方式,53MB 对于它应该做的事情来说似乎都很高。第一次启动时这个大小是可以接受的吗?
更新2:我刚刚在仪表板中注意到,在过去 14 小时内,请求 /_ah/warmup 响应了 24 404 个错误。这可能有关系吗?为什么他们会回复 404 响应状态?
主要问题:为什么它会不断启动新实例(即使没有流量)?特别是已经存在实例的情况下,为什么它们关闭得这么快?
我的解决方案是增加待处理延迟 time.
如果网页同时触发 3 个 ajax 请求,AppEngine 就会为额外的请求启动新实例。配置完成后最小待处理延迟time - 将其设置为 2.5 秒,同一实例正在处理所有三个请求,并且吞吐量是可以接受的。
我的项目仍然有很少的负载/流量...因此,除了提高待处理延迟之外,我在 Pingdom 上开设了一个帐户,并将其配置为每分钟 ping 我的 App Engine 项目。
两者的结合使我拥有一个保持活动状态的实例,并且在大多数时间都在满足所有请求。当确实有必要时,它将扩展到新的实例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)