I recently deployed a Spring MVC application to google app engine, and the intial load time is about 7sec. Once the application is loaded, the app is quite responsive. But, if the app is idle for more than 1 minute (there isn’t ANY traffic to it) the app needs to be again reloaded by GAE, which, takes about 7sec as well. For a PRD-level application this is unacceptable. (The app is empty — I’m not even using JPA, Sitemesh, Spring Security, etc yet. It just loads a jsp page with some text.)
The only “best practice” to fix the ‘load time’ I’ve seen so far is to set up a cron job that hits the url every minute, therefore keeping the app ‘loaded’. Obviously this is a terrible solution.
So here is the question: Are there any “best practices” for Spring on GAE in terms of “responsiveness”? Since google and spring are working on developing better integration between the two of them, has there been any news/progress on this problem? I can’t find anything concrete, that’s why I’m asking it here
Topic Discussions:
http://groups.google.com/group/google-appengine-java/browse_thread/thread/80d014fd5abd526f
UPDATE
There is a ‘ticket’ to create reserved instances, as well as ‘heat up’ logic:
http://code.google.com/p/googleappengine/issues/detail?id=2456
GAE started to provide a paid-for service where you can have a hot instance reserved at all times:
http://googleappengine.blogspot.com/2010/12/happy-holidays-from-app-engine-team-140.html
In conjunction with warm-up requests, this is the best solution if you’re planning on using GAE.