GAE 1.6.4
,Python2.7
,Django 1.3
,使用app.yaml
中的以下内容:
libraries:
- name: django
version: "1.3"
但是,我确实需要您建议明确可操作的步骤,以改善此Django应用程序冷却时的初始请求的响应时间。我在GAE上有一个简单的webapp2
网站,不点击数据库,当冷时,响应时间为1.56s
。 Django,当 cold 时,用2个查询(每个包含少于300行的表的两个count(*)
查询)命中数据库,响应时间为10.73s
!不鼓励主页;)
我想到的是删除我不需要的middleware
类以及其他特定于Django的优化。然而,从GAE的角度来看改善事物的技巧也非常有用。
N.B。我不希望这成为关于在GAE上使用Django的优点的讨论。我可以提一下,我个人的Django专业知识以及由此产生的开发效率,在采用Django而不是其他框架时确实很重要。此外,使用CloudSQL,很容易远离GAE(希望不是!),因为Django代码可以在其他任何地方使用很少(或没有)修改。有关此类主题的相关讨论可以在here和here找到。
答案 0 :(得分:2)
当没有实例运行时,例如在版本升级之后或当没有15分钟的请求时,则请求将触发加载大约需要10秒的实例。所以你所看到的是正常的。
因此,如果您的应用闲置时间超过15分钟,您会看到此行为。一种解决方法是每隔10分钟对您的实例执行cron个作业(虽然我认为谷歌不喜欢这样)。
<强>更新强>
您可以通过启用结算然后在GAE管理员的“应用设置”下设置minimum
空闲实例设置为1.注意:min
设置在免费应用上不可用,只有{{ 1}}。
答案 1 :(得分:2)
我没有完整的答案,但我正在做出贡献,因为我也希望找到解决方案。我目前正在使用正在运行的cron作业(我实际上需要cron作业,所以它不仅仅是为了保持我的应用程序活着)。
我已经在其中一个GAE / Python / Django相关邮件列表中看到过,与webapp相比,加载所有Django文件所需的时间非常重要,因此删除了不使用的django组件从部署中也应该改善您的启动时间。通过删除contrib文件夹的某些部分,我已经能够剃掉大约3秒钟。我在app.yaml中排除了它们。
我的启动时间仍然是6秒左右(完整的应用程序,Django-nonrel,HRD)。当我的应用程序更简单时,它曾经更像是4。
我怀疑Django在启动时验证了所有模型,并且处理时间很长。如果你有时间尝试使用绝对0型号的应用程序,我会很好奇它是否会产生任何影响。
我也很好奇你的两个初步查询是否会产生重大影响。