I've changed the topic name from this thread but the issue is the same:
https://groups.google.com/d/topic/google-appengine-java/nU1c9tHbG60/discussion
I want to know if this is a recognised problem with threads-safe=true apps
and if work is being done to improve the situation. Can I expect a solution
soon or should I revert to thread-safe=false in the mean time. Currently it
is causing havoc with one of my sites and traffic has dropped very
significantly over the last week. Using thread-safe=false raises the
latency on average (but without the long loads) so that is not really ideal.
To reiterate the problem, loading requests frequently time-out with
DeadlineExceededException or HardDeadlineExceededError while loading
classes. As my app uses Guice, this usually happens while creating the
Injector from a ContextListener.
Usually loading requests take 4 - 8 seconds. Recently (last week or more)
they take either the normal time or an excessive amount of time (not in
between), often causing a time-out. When they do time-out the exception is
thrown while waiting for file system access which makes me think that this
is the cause of the long delays and exceptions.
This problem *only *occurs during loading requests - never during normal
requests. This reinforces the theory that it is due to class loading or
other initialisation work. The exception is never thrown while trying to
read from memcache or the datastore so I don't think the recent memcache
problems can be blamed.
Below are some example stack traces from loading requests that time-out
Caused by: com.google.apphosting.api.DeadlineExceededException: This request
(87a9b70d2e6454ce) started at 2011/08/30 21:35:23.631 UTC and was still
executing at 2011/08/30 21:36:07.688 UTC.
at
com.google.appengine.runtime.Request.process-87a9b70d2e6454ce(Request.java)
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:231)
at sun.misc.Resource.getBytes(Resource.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:273)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Caused by: com.google.apphosting.runtime.HardDeadlineExceededError: This
request (5d47b3fba3dc9418) started at 2011/08/30 21:35:53.131 UTC and was still
executing at 2011/08/30 21:36:28.003 UTC.
at
com.google.appengine.runtime.Request.process-5d47b3fba3dc9418(Request.java)
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:231)
at sun.misc.Resource.getBytes(Resource.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:273)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
Caused by: com.google.apphosting.runtime.HardDeadlineExceededError: This
request (969d70b821181c7d) started at 2011/08/30 04:05:53.874 UTC and was still
executing at 2011/08/30 04:06:34.552 UTC.
at
com.google.appengine.runtime.Request.process-969d70b821181c7d(Request.java)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access$1200(ZipFile.java:57)
at java.util.zip.ZipFile$ZipFileInputStream.read(ZipFile.java:476)
at sun.misc.Resource.getBytes(Resource.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:273)
at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
When the loading request take so long, many instances are started to handle
the pending requests. This results in a lot of instances created that are
not needed and they just sit there once the app eventually gets back on its
feet again:
<https://lh5.googleusercontent.com/-9ehwmZDo0ys/Tl3Aevbh45I/AAAAAAAAADg/VJfOXow4Rk8/Capture.PNG>
I've seen related issues in the tracker but one discussion suggested that
the problem was fixed in 1.5.2:
https://groups.google.com/d/topic/google-appengine-java/6tnyfJLBIXM/discussion
One issue in the tracker is "Started" but no update and it is now a couple
of months old:
http://code.google.com/p/googleappengine/issues/detail?id=5214
I hope someone can shed some light on this problem.
Thanks,
John
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/google-appengine-java/-/eKUvh_zhZScJ.
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.