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.

Reply via email to