After using appstats for weeks now, reducing queries and offloading a lot to memcache, our application is pretty fast despite the abysmal performance of the datastore. Once it's been serving for a few minutes, that is.
But: Very many pages of our application take several seconds (4 to 6s!) to load for the first time, even despite warmup requests and several other pages having been executing on the same instance already. Appstats clearly shows that the API calls are not to blame, and running a local profiler doesn't indicate any problems either. I added some more classloading (Class.forName()) to the warmup requests, and it turns out classloading is frequently the cause. Sometimes it takes 100ms to load 20 large classes (and their anonymous inner classes). But sometimes it takes 8 seconds! Occasionally it takes more than 15s, and the warmup request dies! I'm now considering to let the warmup request call additional webpages, so that these request warm up the classes instead. However, given that these new http requests might end up on *other* instances, it's not really a great option. It will increase probablilty of classes being loaded, but it's not a guarantee. So my question: Is there a recommended way of loading classes before the user tries to get them? Is there a way to "chain" warmup requests for instance, e.g. a guarantee that the next request will be on the same instance? That would help a lot. Cheers, Per PS: As much as I love App Engine and the power it brings, I find it extremely annoying to have to fiddle with unreliable classloading performance, and queries that take 300ms on average. Maybe I was overly ambitious in coding a complex application on App Engine, maybe App engine's goal is really just outsourcing large volume processing (and not rich user-centered web applications), but the warning signs are clearly missing then. IMO, speed and reliability are much more important than anything else, and as much as I'd love to see SSL support for custom domains, fulltext search, etc.... I'd really prefer these core problems solved first. Just my 2 cents.. :) -- You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
