从 appengine 访问我的应用程序时,我经常收到以下错误。有人可以知道这是什么原因吗?
原因:com.google.apphosting.api.DeadlineExceededException:此请求 (216e5897c4ca40e3) 开始于 2013/02/21 04:27:45.277 UTC,并且仍在 2013/02/21 04:28:44.702 UTC 执行。
从 appengine 访问我的应用程序时,我经常收到以下错误。有人可以知道这是什么原因吗?
原因:com.google.apphosting.api.DeadlineExceededException:此请求 (216e5897c4ca40e3) 开始于 2013/02/21 04:27:45.277 UTC,并且仍在 2013/02/21 04:28:44.702 UTC 执行。
这与 AppEngine 缓慢无关。正在发生的事情是,您正面临 AppEngine 为某些类型的调用设置的最后期限。
从文档中“请求处理程序生成并返回对请求的响应的时间有限,通常约为 60 秒。一旦达到最后期限,请求处理程序就会中断。Java 运行时环境通过抛出来中断 servlet com.google.apphosting.api.DeadlineExceededException。"
所以这意味着您很可能正在调用一个请求 URL,它已达到 60 秒的限制,但尚未完成其任务并发送响应。
如果您查看您提出的异常“原因:com.google.apphosting.api.DeadlineExceededException:此请求 (216e5897c4ca40e3) 开始于 2013/02/21 04:27:45.277 UTC 并且仍在 2013/02/ 执行21 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