这个帖子似乎已经死了:http://groups.google.com/group/google-appengine-java/browse_thread/thread/80d014fd5abd526f
以下是发生的事情:
异常堆栈跟踪是:
Uncaught exception from servlet
javax.servlet.UnavailableException: com.google.apphosting.api.DeadlineExceededException: This request (fc36c7e0f23da9e6) started at 2012/03/06 21:26:41.562 UTC and was still executing at 2012/03/06 21:27:42.117 UTC.
at org.mortbay.jetty.servlet.ServletHolder.makeUnavailable(ServletHolder.java:415)
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:458)
at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263)
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685)
at org.mortbay.jetty.servlet.Context.startContext(Context.java:140)
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1250)
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)
GAE java团队还没有解决这个问题吗?
我该怎么办?我想避免设置一个每5分钟轮询我的网址的cron工作: - (
答案 0 :(得分:3)
我认为简单的答案是为服务付费并创建一个resident instance,然后你就不会受到旋转/拆卸的影响,这对弹簧来说尤其昂贵。
另一种选择是修剪你的应用程序,这样就不需要很长时间才能启动。
答案 1 :(得分:3)
让事情变得清晰,热身请求无法解决DeadlineExceededException错误。
您看到的DeadlineExceededException是由于启动时间超过60秒。
预热请求不会使启动更快。
付费实例不会让启动更快。
启动成本主要是由于类路径上的类加载和资源加载。 扫描类路径以获取类/资源的任何内容都很慢。
减少扫描时间取决于您的应用在启动时加载的框架。通常的嫌疑人是Spring和JSF。
-lp
答案 2 :(得分:2)
您可以使用warmup requests在发送第一个用户请求之前使您的实例加快速度。
注意:当没有实例运行时,这不会影响第一个请求的延迟时间,只有在新实例(超出现有实例)被启动时才会有所帮助。但是,它应该有助于第一次请求时出现500错误。