Hi Each framework out there will have different impacts on startup time. (I don't use java, but I gather they have introduced some precompile options that could help)
For my python apps I try to stagger or lazy load components, so startup is often not an issue. For instance I serve pages from memcahce if possible without loading any framework other than the core apis provided by app engine. This means my startup times and serve a cached page is typically around 200ms, and if the instance is already running its more like 40ms. If I have to start the entire stack (repoze.bfg) and serve some complex content without the benefit of cache it can take up to 8 secs. Wheras starting a full stack but being able to utilise some cached elements can drop that down to 2-4 secs. This unfortunately means you do have to get a reasonable understanding of what the performance characteristics (especially startup time) is of your chosen framework. Rgds On Feb 14, 1:22 am, Charles <[email protected]> wrote: > Hi Tim, I agree. It's not the persistence of any statics or memory > that concerns me though. It's the fact that every time my VM gets > recycled, the next hit to my site takes a few seconds to resolve while > GAE spins up another JVM to service it. It's the performance that I'm > more worried about, not to mention that every time GAE creates a new > VM for me, it takes significant CPU cycles to do so. > > On Feb 12, 11:52 pm, Tim Hoffman <[email protected]> wrote: > > > Hi > > > You should never depend on any specific instance hanging around just > > the same > > as you cannot depend on anything in memcache hanging around. > > > Rgds > > > T > > > On Feb 13, 12:29 pm, Charles <[email protected]> wrote: > > > > Hi Brandon, > > > > Thanks for the reply. Just from a bit more research, this seems to be > > > related to loading requests (http://code.google.com/appengine/kb/ > > > java.html#What_Is_A_Loading_Request) and their frequency. From the > > > FAQ, it seems like with apps with minimal traffic, or test traffic, > > > VMs seem to be recycled during inactivity. When subsequent requests > > > hit your app after your VM has been handed off, GAE has to spin up a > > > new JVM (a loading request) which re-initializes the entire context > > > (and also eats up significant CPU time). Anyways, kinda sucks that > > > this is how it works, but I can understand why they'd want to do > > > that. And, this only really affects apps in testing or production > > > apps with little traffic. When we get real traffic, *hopefully* this > > > becomes a non-issue. > > > > Also, it looks like they're playing around with the idea of being able > > > to pay to reserve a dedicated JVM (http://code.google.com/appengine/kb/ > > > java.html#Can_I_Pay_To_Reserve_My_JVM). This would be a good solution > > > as well. > > > > Charles > > > > On Feb 12, 12:31 pm, Brandon Thomson <[email protected]> wrote: > > > > > Charles, the app instance can be unloaded at any time and a new one > > > > will initialize to handle the next incoming request. there can be up > > > > to 30 at once. it is by design, not an error. > > > > > On Feb 12, 12:20 am, Charles <[email protected]> wrote: > > > > > > Hi all, > > > > > > I've created a very simple application as a test for a bigger > > > > > application I'm thinking of building on GAE. Right now, it mostly > > > > > contains only two servlets and a single cron job. One servlet is > > > > > loaded on init (and logs an init message), and the other one is called > > > > > every minute by the cron job (and also logs a message). My issue is > > > > > that I'm watching the logs and I'm noticing that my applications > > > > > context is reloaded after an arbitrary amount of time. To be more > > > > > precise, here is an example of what I'd see in the logs... > > > > > > [INFO] Application initializing... > > > > > [INFO] Servlet called 1 times. > > > > > [INFO] Servlet called 2 times. > > > > > [INFO] Servlet called 3 times. > > > > > ... > > > > > [INFO] Servlet called 79 times. > > > > > [INFO] Servlet called 80 times. > > > > > [INFO] Application initializing... > > > > > [INFO] Servlet called 1 times. > > > > > [INFO] Servlet called 2 times. > > > > > > So, as you can see, the application starts and the init servlet is > > > > > loaded (as expected) and I get the "Application initializing" info log > > > > > message. After that, cron calls the other servlet every minute, and > > > > > it posts another log message. However, after a seemingly random > > > > > amount of time, in this case 80 minutes, the application context > > > > > reloads which makes me assume that my entire application restarted. > > > > > It happens at different intervals each time, anywhere from half an > > > > > hour to a few hours. And, I never get any error messages in my log. > > > > > Can someone help me understand this? > > > > > > Thanks in advance > > > > > > Charles -- 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.
