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 <[email protected]> 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 <[email protected]> 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 - --~--~---------~--~----~------------~-------~--~----~ 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 [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-java?hl=en -~----------~----~----~----~------~----~------~--~---
