从appengine访问我的应用程序时,我经常收到以下错误。有人知道这是什么原因吗?
引起原因:com.google.apphosting.api.DeadlineExceededException:此请求(216e5897c4ca40e3)于协调世界时2013/02/21 04:27:45.277开始,在协调世界时2013/02/21 104:28:44.702仍在执行。
这与AppEngine的缓慢无关。现在的情况是,您面临着AppEngine为某些类型的调用设置的最后期限。
根据文档"请求处理程序生成并返回对请求的响应的时间有限,通常在60秒左右。一旦达到截止日期,请求处理程序就会中断。Java运行时环境通过抛出com.google.apphosting.api.DeadlineExceededException来中断servlet。"
因此,这意味着您很可能正在调用一个请求URL,它已经达到了60秒的限制,但尚未完成任务并发送响应。
如果您查看您放置的异常"由:com.google.apphosting.api.DeadlineExceededException引起:此请求(216e5897c4ca40e3)于2013/02/21 04:27:45.277 UTC开始,并在2013/02/2 04:28:44.702 UTC仍在执行。"-您可以看到已达到60秒的截止日期:04:27:45-04:28:44。702
因此,请查看您的代码,并尝试早点返回。如果你认为你需要更多的时间,看看有10分钟限制的Cron Jobs,或者对于更复杂的需求,你有Backends。
如果这些请求通常很快,那么失败的可能是第一个命中新实例的请求。这意味着大量的类加载可能会导致请求时间过长。
考虑使用预热请求来避免这种情况,确保您的预热请求与此方法使用的类/框架相同:
https://cloud.google.com/appengine/docs/java/config/appconfig#Java_Warmup_requests