I have moved my app previously described at 
http://www.rexcel.ca:8888/gems/bbb/load.home
to
http://gems-bbb.appspot.com/gems/bbb/load.home

Since it is designed to be very responsive I felt I need to understand
the spin out/spin in issue and see what immediate band-aid solutions
may be available.  I did not want to get into running CRON jobs to
ping my App because they work against what the google folks are
designing.

Definitions:

The server has 3 modes of running.

(1) COLD - after a deploy when the cache is purposefully trashed.
Everything is loaded from datastore for the first request
(2) WARM - servlet is initialized to service request, classes need to
be refreshed but cache can be used to service request (no datastore I/
O)
(3) HOT - instance is ready and no datastore I/O is needed to service
request.

First, despite all the claims that an app should stay in for many
minutes my App seems to get SPUN OUT AFTER A MINUTE OR 2.

But I can live with that.  Here is why, with my timings.


My system measures turn around times in 2 places.  One, inside the
servlet.  The second on the HTTP page sending the request.  The HTTP
page gives the total time.  The servlet gives the time from when the
request is received to when it leaves.  The difference between the 2
is the network time.  For a warm start (where the JVM has to be built
etc) the increase in network time can be attributed to this extra
startup process.

Here are the average times that I have discovered.  The datastore
times are obtained by looking at the logs. All times are in secs.

The Network time from my site in Canada consistently averages about .
410 secs.

COLD start.  Server=7.500  JVM and Datastore 6.500  Total 14.410

WARM Start: Server 1.100 (Mainly cache read)  JVM etc=2.800  Total
4.310

HOT Start: Server .001  Total .411

My next optimization will be to warm up the Datastore as a scheduled
task just before I finish the WARM request so that the next request
that comes in will also have a Warm datastore.

My log seems to show that Datanucleus needs between .200 and .500 secs
to handle the initialization for each class.

As a peer review of these findings you can go to the app at
http://gems-bbb.appspot.com/gems/bbb/load.home

Clicking on the top-left GEM will send a refresh with a timestamp.
When it returns, hovering over the top left GEM will give the
timings.  When the server time has an * prefix it also includes the
initialization time because a warm or cold start  has happened.

The ggogle folks can also look at the logs.  I am interested to  know
how come I get spun out after only a minute or 2.

Steve Pritchard

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to