[appengine-java] Re: Getting 'Request was aborted after waiting too long to attempt to service your request.' after application idle

2009-09-22 Thread lent

I found one thing that was slowing down creating entity manager
factory.  I was not specifying the persistent classes in
persistence.xml so the persistence framework (jpa) code was loading
all the classes in my jar.  I listed my persistent classes and now the
entity manager creation is now usually less than 4 seconds.

Len

On Sep 14, 2:04 pm, lent lentakeu...@gmail.com wrote:
 Don, I have sent you my application id through email (by doing reply
 to author).

 A few of things I should mention:
 1) we're using JPA
 2) we are not creating EMF by doing:
 Persistence.createEntityManagerFactory(transactions-optional);
 instead it is created through spring's LocalEntityManagerFactoryBean
 (which we subclass to ensure only one instance ofentitymanagerfactory)

 The EMF initialization is done during spring intialization so it is in
 the servlet initialization path and not request processing path.  It
 is just that if GAE chooses to start a new application instance to
 service a request, then the application startup (servlet
 initialization) occurs during request processing.

 Len

 On Sep 14, 10:37 am, Don Schwarz schwa...@google.com wrote:



  Len, what is your application ID?

  On Mon, Sep 14, 2009 at 12:33 PM, Larry Cable larry.ca...@gmail.com wrote:

   can you move the EMF creation out of the request path into the
   initialization path (Servlet.init(ServletConfig) or a static
   initializer
   in the Servlet class at startup ...

   BTW I also am using Spring IoC to create and inject the JDO EMF
   and I dont think I am seeing the same performance issues?

   Do you see similar startup costs on the local dev server as well as
   production?

   good luck

   - Larry

   On Sep 13, 5:27 pm, lent lentakeu...@gmail.com wrote:
I have been doing some profiling on application startup and it seems
that there is a large amount of overhead:
- it takes about 5 seconds between the time the request is received to
where our spring initialization code is invoked
- creating anentitymanagerfactoryis taking on average 8+ seconds
Sometimes these numbers can be much bigger than this, for example we
have seen creatingentitymanagerfactoryas much as 14 seconds.

Given that the application needs to its own initialization (which we
are trying to minimize), we find that the application initialization
becomes very long and when the server is busy and the above number are
even higher, the application initialization fails to complete in 30
seconds.  Note that this is just the application initialization part
and then the actual request has to be processed which will take some
amount of time.

Given that applications can be started on any given request, it makes
things difficult with application startup time and request processing
time with the 30 second limit.

Len

On Sep 8, 10:04 am, lent lentakeu...@gmail.com wrote:

 Hello,

 We have an application which uses GWT (using GWT RPC) on the client
 side.  When the application is left idle for a while (~15 minutes) and
 the application sends a request, we get this reported on the client
 side:

 The server encountered an error and could not complete your request.
 If the problem persists, please report your problem and mention this
 error message and the query that caused it.

 In the log, the following is logged:

 Request was aborted after waiting too long to attempt to service your
 request. Most likely, this indicates that you have reached your
 simultaneous active request limit. This is almost always due to
 excessively high latency in your app. Please seehttp://
   code.google.com/appengine/docs/quotas.htmlformore details.

 I believe that our application has been swapped out and and when the
 request comes in the application is being loaded again as we see some
 log entries we make when the application (servlet) gets initialized.
 It does take some time to get the application initialized but the
 error is reported way before 30 seconds has elapsed.  Is there any way
 to avoid this problem?

 Len- Hide quoted text -

- Show quoted text -- Hide quoted text -

  - Show quoted text -- Hide quoted text -

 - Show quoted text -
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[appengine-java] Re: Getting 'Request was aborted after waiting too long to attempt to service your request.' after application idle

2009-09-14 Thread lent

Don, I have sent you my application id through email (by doing reply
to author).

A few of things I should mention:
1) we're using JPA
2) we are not creating EMF by doing:
Persistence.createEntityManagerFactory(transactions-optional);
instead it is created through spring's LocalEntityManagerFactoryBean
(which we subclass to ensure only one instance of entity manager
factory)

The EMF initialization is done during spring intialization so it is in
the servlet initialization path and not request processing path.  It
is just that if GAE chooses to start a new application instance to
service a request, then the application startup (servlet
initialization) occurs during request processing.

Len

On Sep 14, 10:37 am, Don Schwarz schwa...@google.com wrote:
 Len, what is your application ID?



 On Mon, Sep 14, 2009 at 12:33 PM, Larry Cable larry.ca...@gmail.com wrote:

  can you move the EMF creation out of the request path into the
  initialization path (Servlet.init(ServletConfig) or a static
  initializer
  in the Servlet class at startup ...

  BTW I also am using Spring IoC to create and inject the JDO EMF
  and I dont think I am seeing the same performance issues?

  Do you see similar startup costs on the local dev server as well as
  production?

  good luck

  - Larry

  On Sep 13, 5:27 pm, lent lentakeu...@gmail.com wrote:
   I have been doing some profiling on application startup and it seems
   that there is a large amount of overhead:
   - it takes about 5 seconds between the time the request is received to
   where our spring initialization code is invoked
   - creating an entity manager factory is taking on average 8+ seconds
   Sometimes these numbers can be much bigger than this, for example we
   have seen creating entity manager factory as much as 14 seconds.

   Given that the application needs to its own initialization (which we
   are trying to minimize), we find that the application initialization
   becomes very long and when the server is busy and the above number are
   even higher, the application initialization fails to complete in 30
   seconds.  Note that this is just the application initialization part
   and then the actual request has to be processed which will take some
   amount of time.

   Given that applications can be started on any given request, it makes
   things difficult with application startup time and request processing
   time with the 30 second limit.

   Len

   On Sep 8, 10:04 am, lent lentakeu...@gmail.com wrote:

Hello,

We have an application which uses GWT (using GWT RPC) on the client
side.  When the application is left idle for a while (~15 minutes) and
the application sends a request, we get this reported on the client
side:

The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this
error message and the query that caused it.

In the log, the following is logged:

Request was aborted after waiting too long to attempt to service your
request. Most likely, this indicates that you have reached your
simultaneous active request limit. This is almost always due to
excessively high latency in your app. Please seehttp://
  code.google.com/appengine/docs/quotas.htmlformore details.

I believe that our application has been swapped out and and when the
request comes in the application is being loaded again as we see some
log entries we make when the application (servlet) gets initialized.
It does take some time to get the application initialized but the
error is reported way before 30 seconds has elapsed.  Is there any way
to avoid this problem?

Len- Hide quoted text -

   - Show quoted text -- Hide quoted text -

 - Show quoted text -
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[appengine-java] Re: Getting 'Request was aborted after waiting too long to attempt to service your request.' after application idle

2009-09-13 Thread lent

I have been doing some profiling on application startup and it seems
that there is a large amount of overhead:
- it takes about 5 seconds between the time the request is received to
where our spring initialization code is invoked
- creating an entity manager factory is taking on average 8+ seconds
Sometimes these numbers can be much bigger than this, for example we
have seen creating entity manager factory as much as 14 seconds.

Given that the application needs to its own initialization (which we
are trying to minimize), we find that the application initialization
becomes very long and when the server is busy and the above number are
even higher, the application initialization fails to complete in 30
seconds.  Note that this is just the application initialization part
and then the actual request has to be processed which will take some
amount of time.

Given that applications can be started on any given request, it makes
things difficult with application startup time and request processing
time with the 30 second limit.

Len

On Sep 8, 10:04 am, lent lentakeu...@gmail.com wrote:
 Hello,

 We have an application which uses GWT (using GWT RPC) on the client
 side.  When the application is left idle for a while (~15 minutes) and
 the application sends a request, we get this reported on the client
 side:

 The server encountered an error and could not complete your request.
 If the problem persists, please report your problem and mention this
 error message and the query that caused it.

 In the log, the following is logged:

 Request was aborted after waiting too long to attempt to service your
 request. Most likely, this indicates that you have reached your
 simultaneous active request limit. This is almost always due to
 excessively high latency in your app. Please 
 seehttp://code.google.com/appengine/docs/quotas.htmlfor more details.

 I believe that our application has been swapped out and and when the
 request comes in the application is being loaded again as we see some
 log entries we make when the application (servlet) gets initialized.
 It does take some time to get the application initialized but the
 error is reported way before 30 seconds has elapsed.  Is there any way
 to avoid this problem?

 Len
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---