Google App Engine 应用极慢

18 投票
8 回答
9039 浏览
提问于 2025-04-15 16:44

我在Google App Engine上创建了一个“你好,世界”的网站。这个网站使用的是Django 1.1,没有做任何修改。

虽然这个网页非常简单,但加载起来却很慢,常常会超时。

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

注意:第一次访问后,它的响应速度就快了。

8 个回答

7

总结一下到目前为止的讨论内容:

  • 冷启动的时间很长。
  • 谷歌不鼓励用户频繁访问应用来保持其活跃,但大家不知道有什么其他办法。
  • 有一个关于为Java的热实例付费的问题被提出来了,具体可以查看这个链接
  • 关于Python也有一个问题被提出来,具体可以查看这个链接。其中提到,.py文件没有预编译。
  • 有些应用受到的影响特别大(找不到Google Groups的引用或相关问题)。
  • 2009年3月关于Python的讨论中提到,启动时间少于1秒(!)。

我发现关于Python这个问题的讨论比较少。

20

现在谷歌新增了一个支付选项“始终在线”,每天收费0.30美元。

使用这个功能后,你的应用就不需要再冷启动了。

始终在线

虽然预热请求可以帮助你的应用平稳扩展,但如果你的应用流量非常少,这个功能就没什么用处。对于那些流量低但优先级高的应用,你可以通过App Engine的“始终在线”功能来保留实例。

“始终在线”是一个高级功能,它会保留你应用的三个实例,即使应用没有流量,这些实例也不会关闭。这样可以减少小流量或流量不稳定的应用在加载请求时受到的影响。此外,如果某个“始终在线”的实例意外停止,App Engine会自动用一个预热请求重启这个实例。因此,使用“始终在线”的应用在预热请求期间应该尽量多做一些初始化工作。

即使启用了“始终在线”,如果流量突然增加,你的应用仍然可能会遇到加载请求。

要启用“始终在线”,请在你应用的管理控制台中进入账单设置页面,然后勾选“始终在线”选项。

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

14

这个建议听起来很糟糕,但我还是想说一下:

你可以做一个小程序,或者直接用 wget 配合 cron 定时访问你的应用,比如每隔5分钟访问一次。这样可以防止谷歌把你的应用放入休眠状态。

我之所以说这个建议糟糕,是因为这样做浪费资源,而且有点滥用谷歌的免费服务。我希望你只在短期的测试或启动阶段才这么做。

撰写回答