谷歌应用引擎实例持续快速关闭

2024-05-29 02:03:29 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我已经使用appengine一段时间了,没有任何问题。我知道,如果应用程序有一段时间没有被访问者击中,那么实例将关闭,第一个访问该站点的访问者将有几秒钟的延迟,而一个新的实例将被触发。在

但是,最近似乎实例只在很短的时间内保持活动(有时不到一分钟),如果我有一个实例已经启动并运行,并且我刷新了一个应用程序网页,它仍然会启动另一个实例(它启动的页面是最小的主页HTML,应该不需要太多CPU/内存)。看看我的日志,它不断地启动新的实例,这是以前从未有过的。在

有什么关于我应该看什么的提示,或者有什么关于为什么会发生这种情况的想法?在

另外,我使用的是python2.7、threadsafe、Python_预编译、warmup入站服务、NDB。在

更新:

所以我把我的应用程序改为至少有一个空闲实例,希望这能解决问题,但它仍然在启动新的实例,即使一个常驻实例已经在运行。所以,当只有1个常驻实例(除了我,我没有得到任何流量),当我转到我的应用程序的另一个页面时,它仍然在启动一个新的实例。在

另外,正如koma指出的,我将等待的延迟改为1.5s,但这似乎没有帮助。在

实例的内存使用量始终在53MB左右,这在被调用的页面没有多大作用时令人惊讶。我使用的是F1前端实例类,它的限制是128,但是不管怎样,53MB对于它应该做的事情来说似乎很高。刚开始的时候这个尺寸可以接受吗?在

更新2:我刚在仪表板上注意到,在过去的14个小时内,请求/\u ah/warmup响应了24404个错误。这有关系吗?为什么他们会以404响应状态响应?在

主要问题:为什么它会不断地启动新实例(即使没有流量)?尤其是在已经存在实例的地方,它们为什么这么快就关闭了?在


Tags: 实例内存应用程序网页站点html时间主页
3条回答

1个空闲实例意味着appengine将始终为下一个用户启动一个额外的实例-这就是为什么你看到一个额外的实例用这个设置被激活。在

如果删除空闲实例设置(或使用默认设置)并只增加挂起延迟,则在启动额外实例之前应该“等待”。在

关于主要问题我认为@koma可能是在说,在默认设置下,app engine会倾向于触发额外的实例,即使请求来自同一个会话。在

根据我的经验,app engine在流量大的情况下很好,但在低流量的情况下很难(有时会令人沮丧)使用。尤其是,很难找出触发新实例的标准的细微差别。在

就我个人而言,我有一个“唤醒”cron任务,每隔几分钟就启动一个实例,以确保如果有人来到站点上,一个实例已经准备就绪。这并不理想,因为它会吃掉我的报价,但它大部分时间都有效,因为我的应用程序流量相当高。在

我只是在美国东部时间2月4日星期一晚上10点左右才开始有这类问题,而且一直持续到现在。我首先开始注意到实例不断地启动和关闭,并且延迟急剧增加。似乎实例调度程序关闭空闲实例的速度太快,导致了随后的混乱。在

我将最小空闲实例设置为1以稳定延迟,这很有效。然而,仍有新的例子发生。我尝试了这个线程中的建议,只设置最小挂起延迟,但这没有帮助。最终,空闲实例关闭得太快了。当需要它们时,延迟会在尝试启动新实例时迅速增加。在

我不知道你为什么在几周前看到这个,我几天前才开始。也许他们会逐步向客户推出新的实例调度程序?你还没有看到实例快速关闭吗?

我的解决方案是增加等待时间。在

如果一个网页同时触发3个ajax请求,AppEngine将为这些附加请求启动新实例。配置最小挂起延迟时间-将其设置为2.5秒后,同一个实例正在处理所有三个请求,吞吐量可以接受。在

我的项目仍然没有什么负载/流量。。。因此,除了提高等待的延迟之外,我在Pingdom上打开了一个帐户,并将其配置为每分钟ping我的Appengine项目。在

两者的结合使我有一个实例保持活动状态,并且大部分时间都在处理所有请求。它将在真正需要时扩展到新实例。在

相关问题 更多 >

    热门问题