I know it's typical for people to say that java apps usually take a long 
time to start. IMO, the overhead of the JVM in startup is usually in the 
milliseconds range. Jetty barebones starts up in the milliseconds range. My 
app consistently starts up in less than 1 second, and it does a fair amount:
- does ORM against the datastore entities leveraging reflection extensively 
(sort of what Objectify does), 
- leverages a custom Dependency Injection framework with objects bound to 
jvm, thread and request scopes leveraging Reflection extensively (sort of 
like what Guice does), 
- reads stuff from the datastore at startup to pre-cache some non-changing 
entities, 
- creates data structures which end up using about 5MB of heap 

The high startup time of an app is a consequence of the libraries and 
frameworks you choose, and not a consequence of the language used. Granted, 
many Java based apps which use some popular frameworks which were not 
optimized for startup time will pay a cost, but that's a choice of the 
developer, not an inherent platform problem. 

>From what Greg mentioned, the 15 minutes idle time does not seem to be 
negotiable from the scheduler's point of view i.e. if your instance does 
work for 1 minute, it *will* remain resident for another 15 minutes before 
the system takes it offline, adding to your cost. For my app which starts up 
in less than 1 second (which feels instantly to a user), having to pay an 
extra 1/4 instance hour when I am charged by the instance hour is ... high. 
I'm basically being charged for doing nothing, even when I didn't ask you to 
keep me up. 

As a compromise, we should be able to tell the scheduler how long to keep 
extra instances up, since we know our application. The scheduler can give a 
minimum, but I think that minimum for the second instance and up should be 1 
minute and not 15 minutes. 

Also, this 15 minutes idle time applies irrespective of the language runtime 
used ie python apps which startup in milliseconds to do some extra work for 
a few seconds now have to pay an extra 1/4 instance hour each time. 

This may be fair for dynamic backends, which are designed to do latent 
tasks, but not for front-ends which are supposed to do quick sub-second 
operations.

-- 
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