【发布时间】:2011-04-21 21:28:48
【问题描述】:
我最近在谷歌应用引擎上部署了一个 Spring MVC 应用程序,初始加载时间约为 7 秒。加载应用程序后,该应用程序的响应速度非常快。但是,如果应用程序空闲超过 1 分钟(没有任何流量),则应用程序需要由 GAE 再次重新加载,这也需要大约 7 秒。对于 PRD 级别的应用程序,这是不可接受的。 (应用程序是空的——我什至还没有使用 JPA、Sitemesh、Spring Security 等。它只是加载一个带有一些文本的 jsp 页面。)
到目前为止,修复“加载时间”的唯一“最佳实践”是设置一个每分钟访问 url 的 cron 作业,从而保持应用程序“加载”。显然这是一个糟糕的解决方案。
所以问题来了:在“响应性”方面,GAE 上的 Spring 是否有任何“最佳实践”?由于 google 和 spring 正在努力开发他们两者之间更好的集成,有没有关于这个问题的任何消息/进展?我找不到任何具体的东西,所以我在这里问它
话题讨论: http://groups.google.com/group/google-appengine-java/browse_thread/thread/80d014fd5abd526f
更新
有一个“票”来创建保留实例,以及“加热”逻辑: http://code.google.com/p/googleappengine/issues/detail?id=2456
【问题讨论】:
-
出于好奇,为什么 cron 作业“显然”是一个糟糕的解决方案。它“显然”很糟糕,但如果它有效......
-
随着应用程序的增长,它初始化所需的时间会增加,因此如果应用程序需要 30 秒来初始化等,1 分钟的 cron 作业将变成 30 秒的 cron 作业。仅添加弹簧安全性就会大大增加加载时间。此外,它为应该修复的 Spring/GAE 问题增加了不必要的复杂性。 :)
标签: java performance google-app-engine spring-mvc