Google App Engine (Java) App停止工作(所有版本)



我的应用程序的所有版本突然停止工作。

类似于无法加载多个版本的AppEngine项目并看到HardDeadLineExceeded异常

从日志:

Failed startup of context com.google.apphosting.utils.jetty.RuntimeAppEngineWebAppContext@7881db{/,/base/data/home/apps/[MY_APP]/946.357282374521459350}
com.google.apphosting.api.DeadlineExceededException: This request (d505d1e88148a047) started at 2012/03/08 04:17:00.300 UTC and was still executing at 2012/03/08 04:18:00.917 UTC.
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 java.util.zip.ZipFile$1.fill(ZipFile.java:259)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.io.DataInputStream.readFully(DataInputStream.java:195)
at java.util.jar.JarFile.hasClassPathAttribute(JarFile.java:482)
at java.util.jar.JavaUtilJarAccessImpl.jarFileHasClassPathAttribute(JavaUtilJarAccessImpl.java:33)
at sun.misc.URLClassPath$JarLoader.getClassPath(URLClassPath.java:1176)
at sun.misc.URLClassPath.getLoader(URLClassPath.java:374)
at sun.misc.URLClassPath.findResource(URLClassPath.java:201)
at java.net.URLClassLoader$2.run(URLClassLoader.java:379)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findResource(URLClassLoader.java:376)
at com.google.apphosting.runtime.security.UserClassLoader.findResource(UserClassLoader.java:723)
at java.lang.ClassLoader.getResource(ClassLoader.java:977)
at org.mortbay.resource.Resource.newSystemResource(Resource.java:203)
at org.mortbay.jetty.webapp.WebXmlConfiguration.configureDefaults(WebXmlConfiguration.java:159)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1230)
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517)
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:467)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:202)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:171)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:422)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)
C 2012-03-07 23:18:01.030
Uncaught exception from servlet
javax.servlet.UnavailableException: Initialization failed.
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:211)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:171)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:422)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)

Also, seen in browser:

Uncaught exception from servlet
javax.servlet.UnavailableException: Initialization failed.
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:211)
at com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler(AppVersionHandlerMap.java:171)
at com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:123)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:422)
at com.google.tracing.TraceContext$TraceContextRunnable.runInContext(TraceContext.java:449)
at com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:455)
at com.google.tracing.TraceContext.runInContext(TraceContext.java:695)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:333)
at com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:325)
at com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:453)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:251)
at java.lang.Thread.run(Thread.java:679)

日志中的另一个错误:

2012-03-08 12:28:26.248$SystemLoader loadFinalizer:不允许访问系统类加载器。2012-03-08 12:28:27.143util.$FinalizableReferenceQueue:启动引用终结器线程失败。只有在创建新引用时才会进行引用清理。java.lang.reflect.InvocationTargetExceptioncom.google.appengine.runtime.Request.process-58eed86e9936f59f (Request.java)在sun.reflect.NativeMethodAccessorImpl。invoke0(本地方法)在sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java: 57)sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java: 43)java.lang.reflect.Method.invoke (Method.java: 43)在com.google.inject.internal.util。FinalizableReferenceQueue美元。(FinalizableReferenceQueue.java: 124)在com.google.inject.internal.util。地图制作者QueueHolder美元。(MapMaker.java: 787)在com.google.inject.internal.util。地图制作者WeakEntry美元。(MapMaker.java: 946)com.google.inject.internal.util。地图制作者强度1.美元美元newentry (MapMaker.java: 312)在com.google.inject.internal.util。地图制作者StrategyImpl.newEntry美元(MapMaker.java: 498)在com.google.inject.internal.util。地图制作者StrategyImpl.newEntry美元(MapMaker.java: 419)在com.google.inject.internal.util。CustomConcurrentHashMap ComputingImpl.get美元(CustomConcurrentHashMap.java: 2029)com.google.inject.internal.Annotations AnnotationChecker.hasAnnotations美元(Annotations.java: 116)com.google.inject.internal.Annotations.isBindingAnnotation (Annotations.java: 180)com.google.inject.internal.Annotations.findBindingAnnotation (Annotations.java: 161)com.google.inject.internal.ProviderMethodsModule.getKey (ProviderMethodsModule.java: 129)com.google.inject.internal.ProviderMethodsModule.createProviderMethod (ProviderMethodsModule.java: 116)com.google.inject.internal.ProviderMethodsModule.getProviderMethods (ProviderMethodsModule.java: 83)com.google.inject.internal.ProviderMethodsModule.configure (ProviderMethodsModule.java: 73)com.google.inject.spi.Elements RecordingBinder.install美元(Elements.java: 223)com.google.inject.spi.Elements RecordingBinder.install美元(Elements.java: 232)com.google.inject.spi.Elements.getElements (Elements.java: 101)com.google.inject.internal.InjectorShell Builder.build美元(InjectorShell.java: 133)com.google.inject.internal.InternalInjectorCreator.build (InternalInjectorCreator.java: 103)com.google.inject.Guice.createInjector (Guice.java: 95)com.google.inject.Guice.createInjector (Guice.java: 72)com.google.inject.Guice.createInjector (Guice.java: 62)在[MYAPP] .server.guice.GuiceInjectorFactory GuiceBerry.getInjector美元(GuiceInjectorFactory.java: 20)在[MYAPP] .server.guice.GuiceInjectorFactory.getInjector (GuiceInjectorFactory.java: 29)com.google.inject.servlet.GuiceServletContextListener.contextInitialized (GuiceServletContextListener.java: 45)org.mortbay.jetty.handler.ContextHandler.startContext (ContextHandler.java: 548)org.mortbay.jetty.servlet.Context.startContext (Context.java: 136)org.mortbay.jetty.webapp.WebAppContext.startContext (WebAppContext.java: 1250)org.mortbay.jetty.handler.ContextHandler.doStart (ContextHandler.java: 517)org.mortbay.jetty.webapp.WebAppContext.doStart (WebAppContext.java: 467)org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java: 50)com.google.tracing.TraceContext TraceContextRunnable.runInContext美元(TraceContext.java: 449)在com.google.tracing.TraceContext TraceContextRunnable 1.美元运行(TraceContext.java: 455)com.google.tracing.TraceContext.runInContext (TraceContext.java: 695)com.google.tracing.TraceContext AbstractTraceContextCallback.runInInheritedContextNoUnref美元(TraceContext.java: 333)com.google.tracing.TraceContext AbstractTraceContextCallback.runInInheritedContext美元(TraceContext.java: 325)com.google.tracing.TraceContext TraceContextRunnable.run美元(TraceContext.java: 453)java.lang.Thread.run (Thread.java: 679)造成原因:java.security.AccessControlException: access denied (java.lang. error)RuntimePermission modifyThreadGroup)java.security.AccessControlContext.checkPermission (AccessControlContext.java: 355)java.security.AccessController.checkPermission (AccessController.java: 567)java.lang.SecurityManager.checkPermission (SecurityManager.java: 549)java.lang.ThreadGroup.checkAccess (ThreadGroup.java: 315)java.lang.Thread.init (Thread.java: 353)在java.lang.Thread。(Thread.java: 479)在com.google.inject.internal.util。美元终结器。(Finalizer.java: 92)在com.google.inject.internal.util。Finalizer.startFinalizer美元(Finalizer.java: 81)…42更多C 2012-03-08 12:28:59.290来自servlet的未捕获异常此请求(58eed86e9936f59f)在2012/03/08 17:27:56.854 UTC开始,并且在2012/03/08 17:28:59.245 UTC仍在执行。在java.io.FileInputStream。readBytes(本地方法)java.io.FileInputStream.read (FileInputStream.java: 231)java.io.BufferedInputStream.fill (BufferedInputStream.java: 235)java.io.BufferedInputStream.read1 (BufferedInputStream.java: 275)java.io.BufferedInputStream.read (BufferedInputStream.java: 334)$ClassReader.a(来源未知)在com.google.inject.internal.asm.$ClassReader.(来源未知)在com.google.inject.internal.util。LineNumbers美元。(LineNumbers.java: 62)com.google.inject.internal.util stacktraceelement 1.美元。应用(StackTraceElements.java: 36)com.google.inject.internal.util stacktraceelement 1.美元。应用(StackTraceElements.java: 33)在com.google.inject.internal.util。地图制作者StrategyImpl.compute美元(MapMaker.java: 549)在com.google.inject.internal.util。地图制作者StrategyImpl.compute美元(MapMaker.java: 419)在com.google.inject.internal.util。CustomConcurrentHashMap ComputingImpl.get美元(CustomConcurrentHashMap.java: 2041)在com.google.inject.internal.util。美元StackTraceElements.forMember (StackTraceElements.java: 53)com.google.inject.internal.Errors.formatSource (Errors.java: 690)com.google.inject.internal.Errors.format (Errors.java: 555)com.google.inject.ProvisionException.getMessage (ProvisionException.java: 59)java.lang.Throwable.getLocalizedMessage (Throwable.java: 284)java.lang.Throwable.toString (Throwable.java: 360)java.lang.String.valueOf (String.java: 2838)java.lang.StringBuffer.append (StringBuffer.java: 236)org.mortbay.component.AbstractLifeCycle.setFailed (AbstractLifeCycle.java: 183)org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java: 56)org.mortbay.jetty.servlet.ServletHandler.initialize (ServletHandler.java: 662)org.mortbay.jetty.servlet.Context.startContext (Context.java: 140)org.mortbay.jetty.webapp.WebAppContext.startContext (WebAppContext.java: 1250)org.mortbay.jetty.handler.ContextHandler.doStart (ContextHandler.java: 517)org.mortbay.jetty.webapp.WebAppContext.doStart (WebAppContext.java: 467)org.mortbay.component.AbstractLifeCycle.start (AbstractLifeCycle.java: 50)com.google.apphosting.runtime.jetty.AppVersionHandlerMap.createHandler (AppVersionHandlerMap.java: 202)com.google.apphosting.runtime.jetty.AppVersionHandlerMap.getHandler (AppVersionHandlerMap.java: 171)com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest (JettyServletEngineAdapter.java: 123)com.google.apphosting.runtime.JavaRuntime RequestRunnable.run美元(JavaRuntime.java: 422)com.google.tracing.TraceContext TraceContextRunnable.runInContext美元(TraceContext.java: 449)在com.google.tracing.TraceContext TraceContextRunnable 1.美元运行(TraceContext.java: 455)com.google.tracing.TraceContext.runInContext (TraceContext.java: 695)com.google.tracing.TraceContext AbstractTraceContextCallback.runInInheritedContextNoUnref美元(TraceContext.java: 333)com.google.tracing.TraceContext AbstractTraceContextCallback.runInInheritedContext美元(TraceContext.java: 325)com.google.tracing.TraceContext TraceContextRunnable.run美元(TraceContext.java: 453)com.google.apphosting.runtime.ThreadGroupPool PoolEntry.run美元(ThreadGroupPool.java: 251)java.lang.Thread.run (Thread.java: 679)2012-03-08 12:28:59.323此请求导致为您的应用程序启动一个新进程,从而导致第一次加载应用程序代码。因此,与应用程序的典型请求相比,此请求可能需要更长的时间并使用更多的CPU。2012-03-08 12:28:59.323处理此请求的进程遇到问题,导致其退出。这可能会导致对应用程序的下一个请求使用一个新进程。如果经常看到此消息,则可能在应用程序初始化期间抛出异常。(错误码104)

这可能是由于应用程序启动时间过长造成的。当您的应用程序仍在初始化自身时,它超过了每个请求的硬性时间限制(30秒,但实际上显然更像是60秒)。

我也看到过这些情况,我认为这是你的应用加载成本太高,以及AppEngine方面出了问题;加载类所花费的时间似乎比预期的要长得多。因此,要么尝试精简你的应用程序,要么等待谷歌解决潜在的问题。

来自com.google.inject.internal.util.$FinalizableReferenceQueue$SystemLoader loadFinalizer的日志消息是转移注意力的,它们在AppEngine上使用Guice时是正常的,不应该造成伤害。

最新更新