Woah!  30s to start your app in your local dev environment?  That's nuts.

You have a mistaken perception of GAE.  In nearly all respects, your local
dev environment will perform a single thread of execution faster than
production.  Your local machine has dedicated CPU cores and I/O bandwidth,
all local.  It has a mock datastore which likely has no synchronization
issues.

In production, the filesystem is loading across a network.  Nearly all
service calls require an RPC to a remote machine somewhere else in the
cluster - maybe to several machines.  You're sharing CPU cores and RAM with
a dozen other apps, some of which might be really busy.

What you get in production is a system that is not especially fast but
nearly always consistent no matter what the queries/sec or database size.

Your best strategy is to figure out why your app is taking so long to start
up and address that.

Jeff

On Fri, Apr 13, 2012 at 2:31 PM, Eliran Bivas <eliran.bi...@gmail.com>wrote:

> Do you have any recommendations how to reduce the amount of IO operations
> during startup?
> My app uses Spring and like many other Java best practices followed, my
> project consists of several Maven modules which results several jars
> creation.
> I do not load any data from datastore or require HTTP connection during
> startup.
>
> I understand the AppEngine filesystem is extremely slow, but on my local
> dev machine loading my app takes ~30sec, so I assume that in a much
> superior infrastructure it should take even faster. I believe AppEngine
> should provide some property to extend loading requests to reach over 60
> seconds (like cron operations are allowed 10mins runtime).
>
> Thanks in advance
>
>
>
> On Friday, April 13, 2012 5:51:15 PM UTC+3, Jeff Schnitzer wrote:
>>
>> Right.  The problem is the 61244ms that it takes to start your app.  How
>> long does it normally take?
>> Look at past warmup requests (the ones that work) and see how long they
>> take.  My guess is that
>> the number is close to 60s.  If GAE gets marginally slower, it pushes you
>> over the edge.
>>
>> As for why your app takes so long to startup, I can't begin to speculate.
>>  What does it do at startup?
>> Do any of your frameworks do classpath scanning?  Do you have a lot of
>> big jars?  Zillions of
>> class files?  Do you load data from the datastore or blobstore?
>>
>> You need to diagnose the warmup requests that *do* work.  Sure, look at
>> appstats - although
>> that will only show issues if your warmup fetches data from services (ie,
>> not the filesystem).
>> However, you really should be able to think about it a few minutes and
>> figure out the problem.
>> App startup is almost 100% deterministic.  There are no parameters.  You
>> know what it does.
>>
>> Jeff
>>
>> On Fri, Apr 13, 2012 at 9:55 AM, Rui Oliveira <rucaso2...@gmail.com>wrote:
>>
>>>  Hi Jeff
>>>>
>>>> Thanks for your replay. Your answer was very important for me to start
>>>> looking to the right part of the problem.
>>>>
>>>>  Just to clarify :"startup time" is the time to start a new instance
>>>> right?
>>>>
>>>> How can I analyze the startup time inside the server? I'm looking to
>>>> the appengine logs, appstats, and speedtracer, but in none of them I can
>>>> find whats happening during the startup.
>>>>
>>>>  If I deploy the program I'm getting this kind of logs:
>>>>
>>>>
>>>    1. 012-04-13 11:33:35.889 /_ah/warmup 500 6****1244ms 0kb
>>>    2. W2012-04-13 11:33:35.787 EXCEPTION com.google.apphosting.api.**
>>>    Dead**lineExceededException: This request (08f66682e6ba5919) started
>>>    at 2012/04/13 11:32:35.741 UTC and was still e
>>>    3. E2012-04-13 11:33:35.790 javax.servlet.**Ser**vletContext log:
>>>    unavailable javax.servlet.**UnavailableExcep**tion: This request
>>>    (08f66682e6ba5919) started at 2012/04/13 11:32:35.741 U
>>>    4. W2012-04-13 11:33:35.810 Failed startup of context
>>>    com.google.apphosting.utils.**je**tty.**RuntimeAppEngineWebAppCont**
>>>    ext@**1811e2c{/,/base/data/home/****apps/s~airmenudemo/29.**35817792*
>>>    *1953
>>>    5. C2012-04-13 11:33:35.816 Uncaught exception from servlet
>>>    javax.servlet.**UnavailableExcep**tion: Initialization failed. at
>>>    com.google.apphosting.runtime.****jetty.AppVersionHandlerMa
>>>    6. I2012-04-13 11:33:35.819 This request caused a new process to be
>>>    started for your application, and thus caused your application code to be
>>>    loaded for the first time. This requ
>>>    7. W2012-04-13 11:33:35.819 A problem was encountered with the
>>>    process that handled this request, causing it to exit. This is likely to
>>>    cause a new process to be used for the nex
>>>
>>>
>>>
>>>> On appstats: ( 
>>>> http://www.airmenudemo.**appsp**ot.com/appstats/stats<http://www.airmenudemo.appspot.com/appstats/stats>
>>>>  )
>>>>
>>>>  (16) 2012-04-13 11:36:31.587 "GET /appstats/" 307 
>>>> <http://www.airmenudemo.appspot.com/appstats/details?time=1334316991587>real=215ms
>>>> api=0ms overhead=0ms (0 RPCs)
>>>>
>>>>  (17) 2012-04-13 11:35:49.207 "GET /symbolmanifest.json" 404 
>>>> <http://www.airmenudemo.appspot.com/appstats/details?time=1334316949207>real=609ms
>>>> api=0ms overhead=0ms (0 RPCs)
>>>>
>>>>  (18) 2012-04-13 11:27:25.255 "GET /_ah/warmup" 200 
>>>> <http://www.airmenudemo.appspot.com/appstats/details?time=1334316445255>real=441ms
>>>> api=0ms overhead=0ms (0 RPCs)
>>>>
>>>> As you can see after deploy the appstats don't log nothing.
>>>
>>> After deploy I can't even open appstats.
>>>
>>> After some minutes / hours everything starts ok.
>>>
>>> Thanks
>>>
>>> Rui
>>>
>>>>  --
>>> You received this message because you are subscribed to the Google
>>> Groups "Google App Engine" group.
>>> To view this discussion on the web visit https://groups.google.com/d/**
>>> msg/google-appengine/-/frES_**he8DHYJ<https://groups.google.com/d/msg/google-appengine/-/frES_he8DHYJ>
>>> .
>>>
>>> To post to this group, send email to 
>>> google-appengine@googlegroups.**com<google-appengine@googlegroups.com>
>>> .
>>> To unsubscribe from this group, send email to
>>> google-appengine+unsubscribe@**googlegroups.com<google-appengine%2bunsubscr...@googlegroups.com>
>>> .
>>> For more options, visit this group at http://groups.google.com/**
>>> group/google-appengine?hl=en<http://groups.google.com/group/google-appengine?hl=en>
>>> .
>>>
>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-appengine/-/WJ0eGsUpEgwJ.
>
> To post to this group, send email to google-appengine@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>

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

Reply via email to