Thanks.
On Dec 18, 5:17 pm, Marzia Niccolai <[email protected]> wrote:
> Hi,
>
> Seems like you are also doing some heavy module importing. You could be
> able to trim that down as well.
>
> -Marzia
>
> On Thu, Dec 18, 2008 at 1:57 PM, Derrick <[email protected]> wrote:
>
> > Here is what I get from the profile of a query that does not exceed
> > the deadline, but comes close:
>
> > ncalls tottime percall cumtime percall filename:lineno(function)
> > 15/13 0.299 0.020 1.018 0.078 {__import__}
> > 16 0.217 0.014 0.235 0.015
> > {google3.apphosting.runtime._apphosting_runtime___python__apiproxy.Wait}
>
> > Does this mean that I am making 16 datastore requests and that I need
> > to cut down on the number of such requests?
>
> > On Dec 18, 1:13 pm, Marzia Niccolai <[email protected]> wrote:
> > > This means your app is taking more than 10 seconds to respond to a
> > request.
> > > Try processing less data per request, or work on streamlining the way
> > that
> > > you process the data during a request.
>
> > > -Marzia
>
> > > On Thu, Dec 18, 2008 at 12:48 PM, Derrick <[email protected]>
> > wrote:
>
> > > > I am getting <class 'google.appengine.runtime.DeadlineExceededError'>
>
> > > > On Dec 18, 12:12 pm, Marzia Niccolai <[email protected]> wrote:
> > > > > Hi Derrick,
>
> > > > > What DeadlineExceedError message are you getting, there are a few
> > > > different
> > > > > deadlines you can run in to with App Engine.
>
> > > > > The most common would be the request deadline. Any given request
> > with
> > > > App
> > > > > Engine must be completed within 10 seconds. This is the runtime
> > > > > DeadlineExceededError
>
> > > > > Various APIs, like the datastore and URLFetch also have deadlines to
> > > > ensure
> > > > > that those calls return within the overall request deadline. If you
> > are
> > > > > running in to this deadline, you will get the
> > > > > apiproxy_errors.DeadlineExceededError.
>
> > > > > The problem shouldn't have anything to do with indexing, since simple
> > > > > queries indexes are automatically generated, there is no need specify
> > > > them
> > > > > in the index.yaml (see this article:
> > > >http://code.google.com/appengine/articles/index_building.html)
>
> > > > > From your description I can imagine the problem is either you are
> > > > requesting
> > > > > too much information from the datastore (running in to
> > > > > apiproxy_errors.DeadlineExceededError) in one request. The amount of
> > > > data
> > > > > you can return in a query will depend on the size and shape of your
> > data,
> > > > > but you can test this by reducing the amount of data you query for in
> > one
> > > > > call.
>
> > > > > The other issue I can see is that you are just taking too long to
> > return
> > > > the
> > > > > entire request. This probably happens because it takes too long to
> > > > process
> > > > > all of your results before the request deadline.
>
> > > > > Generally in such a case we'd suggest profiling your application
> > which
> > > > will
> > > > > indicate on which calls, and for how long, your app spends it's time.
> > > > Some
> > > > > good information on profiling can be found in our FAQ:
> > > >http://code.google.com/appengine/kb/commontasks.html#profiling
> > > > > Screencast:
> > > > > Optimizing Your App: Profiling and Memcachehttp://
> > > >www.youtube.com/watch?v=Zip1G6-NiMM
> > > > > And the Google I/O talk 'Building a Production Quality Application on
> > > > Google
> > > > > App Engine:
> > > >http://sites.google.com/site/io/best-practices---building-a-productio.
> > ..
>
> > > > > -Marzia
>
> > > > > On Thu, Dec 18, 2008 at 10:39 AM, Derrick <[email protected]>
> > > > wrote:
>
> > > > > > I am consistently getting Deadline exceeded messages. The problem
> > is
> > > > > > that my individual requests are trivial: do a query or two to
> > > > > > BigTable, serialize the results, and return them.
>
> > > > > > So, what could be causing these messages. How are deadlines
> > actually
> > > > > > measured on app engine?
>
> > > > > > In my case, I am sending a number (10-50) of requests in parallel.
> > > > > > Each individual request retrieves a single row in a table plus one
> > or
> > > > > > two rows in related tables.
>
> > > > > > I would guess that that CPU time usage is measured by interrupting
> > the
> > > > > > thread serving a request at regular intervals. The question is,
> > how
> > > > > > does this interrupt ascertain whether a CPU deadline has been
> > > > > > exceeded.
>
> > > > > > I hypothesize that when the poller wakes up, it checks to see which
> > > > > > application has the cpu, and adds a tick to the count for that
> > user.
> > > > > > If the same application is using the CPU as the previous time the
> > > > > > poller awoke, then the poller checks to see if the tick count
> > exceeds
> > > > > > the deadline. If so, it initiates a deadline exceeded message and
> > > > > > terminates the request.
>
> > > > > > If this is the algorithm, then it is very problematic for me. Will
> > > > > > someone from the Google App Engine team explain to us the workings
> > of
> > > > > > the Deadline measuring algorithm so that we can adjust our
> > application
> > > > > > for work on the platform.
>
> > > > > > Also, could the problem have anything to do with indexing? Our
> > > > > > queries are dirt simple: a single query parameter, so we do not
> > > > > > generate indices for them manually.
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---