谷歌应用引擎应用程序极其缓慢

18

我在Google App Engine上创建了一个Hello World网站。它使用的是Django 1.1版本,没有任何补丁。

尽管这只是一个非常简单的网页,但它需要很长时间才能加载完成,并且经常超时。

有什么建议可以解决这个问题吗?

注意:第一次访问后,它会很快响应。


2
这个问题在最近的appengine小组帖子中讨论过:http://groups.google.com/group/google-appengine/browse_thread/thread/22692895421825cb。同时也讨论了ping的问题-这可能会导致应用超时时间越来越短,因为Google和ping工具的升级。 - Peter Recore
8个回答

20

现在谷歌已经添加了一个名为“Always On”的支付选项,每天 0.30$。

使用此功能,您的应用程序将不再需要冷启动。

Always On

尽管热身请求可以帮助应用程序平稳扩展,但如果您的应用程序流量非常低,则无法帮助。对于流量较低的高优先级应用程序,您可以通过App Engine的Always On功能预留实例。

Always On是一项高级功能,它会预留三个实例,即使应用程序没有流量也不会关闭,以缓解负载请求对具有小型或可变流量的应用程序的影响。此外,如果Always On实例意外关闭,App Engine会自动使用热身请求重新启动实例。因此,Always On 应用程序应该在热身请求期间尽可能多地进行初始化。

即使启用了Always On,如果流量突然增加,您的应用程序仍可能遇到加载请求。

要启用 Always On,请转到应用程序管理控制台中的计费设置页面,并单击Always On复选框。

http://code.google.com/intl/de-DE/appengine/docs/adminconsole/instances.html


14

这个建议很糟糕,但我还是提出了:

构建一个小型客户端应用程序或只是使用 wgetcron 定期访问您的应用程序,大约每 5 分钟一次。这样就可以防止 Google 将其置于休眠状态。

我说这是一个可怕的建议,因为这是浪费资源和滥用 Google 的免费服务。我希望您只在短暂的测试/启动阶段做此操作。


1
我发现来自不同IP的请求并不一定会相互预热...这取决于你访问G的Web服务器群中的哪个部分...对于给定的IP,会话似乎是粘性的。 - HaveAGuess

7
总结一下目前为止这个帖子的内容:

我看到对于Python的讨论较少。


1
当涉及到Django时,这是Python的常见问题。大量导入的内容与频繁卸载实例的系统不兼容。 - Wooble

4
如果第一个请求后响应迅速,那么很可能只是需要启动相关进程。不过,令人惊讶的是它需要如此长时间才会超时。这是在您更新了应用程序并验证AppEngine控制台显示其准备就绪后发生的吗?
在许多Web框架中,“首次访问缓慢”是相当常见的。这在开发过程中有些麻烦,但对于生产环境来说并不是问题。

我可以确认这也发生在我身上。似乎如果应用程序长时间未被访问,AppEngine 会将其置于休眠状态,并进行繁琐的唤醒过程。我曾经在一个本来正常运行的应用程序上遇到了超时问题。一旦 Dondon 拥有了第一百万个用户,这将不再是一个问题 :) - Carl Smotricz

4

还有一个可能会增加响应时间的提示。

启用计费确实会增加配额,并且根据我的个人经验,也会增加应用的总体响应速度。可能是因为启用计费的应用程序在谷歌中具有更高的优先级。例如,禁用计费的应用程序每次请求只能发送5-10封电子邮件,而启用计费的应用程序可以轻松处理200封电子邮件/请求。

只需要设置低的计费级别 - 毕竟你永远不知道Slashdot、Digg或HackerNews会何时注意到你的站点 :)


3

我遇到了使用基于pylons的应用程序时相同的问题。我将初始页面服务器设置为静态,并在其中放置一个虚拟的ajax调用以启动应用程序,然后用户输入凭据。通常这足以避免长时间的响应...这只是一个想法,您可能在实际拥有一百万用户之前使用它 ;)。


3

我选择使用Pingdom的原因很显然——无需冷启动是一个优点。当然,客户很快就会涌来,这将不再是一个问题。


1
您可能想尝试CloudUp。它会定期向您的Google应用发送ping以保持其活跃状态。它是免费的,您可以添加任意数量的应用程序。它还支持Azure和Heroku。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接