I've been developing an application for quite some time and I always noticed the following things while testing:
- The first hit to the quiet server took a long time due to application startup. Anywhere from 10-30 seconds. Sometimes I see 60 seconds. - Performance would be ok but it seems like a lot of extra instances would be spun up with just a single user. That's even with safe threading enabled. - Of course after a few minutes of idle time the instance would spin down and then the next request would take a long time to process while a new instance was spooled up I should also mention that I'm using GWT with RPC and I'm using Spring to manage all of my services. I do think that the use of Spring is why my application takes so long to start up. Since the datastore EMF handles my transactions I really only use the spring framework to provide dependency access to singleton beans across servlets and RPC services. But the primary reason I use Spring is for the session scoped bean so that I can store objects in the session. I actually don't store much in the session, just the current user id so performance should be OK. During QA I was kind of OK with with the bad performance because I attributed the delays with the spooling up of instance #1. Yesterday I enabled the persistent instances where I pay $9 a month to have three instances constantly powered on and waiting. That seemed to work at first. My first hit to server where I access a JSP is pretty fast. Login then takes awhile and then my first RPC call took forever. When I looked at the instances it made sense. Even though there were three instances waiting for traffic, for some reason, a single user accessing the server caused another three instances to be spooled up for a total of six. Again, this is just for a single user accessing the system. I've since accessed appstats and inserted a bunch of logging statements. As far as I can tell, all of my datastore requests are <100ms. Since some RPC calls make multiple calls to the DB I see some request times around 0.5s or 1s. I wouldn't think that such a time would cause additional instances to be spun up. So my only guess as to why additional instances keep getting spun up is that Spring is taking forever to load the small configuration files. It also looks like Spring isn't initialized until login is called. Post access to the JSP. So what do I do? I've tried to optimize Spring startup as much possible but that clearly doesn't seem to be working. Does anyone have any suggestions or do I have to figure out how to completely ditch Spring and use Guice for my dependency injection. If that's true, what do I do about the session scoped bean? I found a bunch a GAE session projects for python but so far I haven't found one for managing session objects in java. Does anyone have any ideas? -- 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-java@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.