【问题标题】:Why i am getting DeadlineExceededException: in my web application?为什么我在我的 Web 应用程序中收到 DeadlineExceededException:?
【发布时间】:2011-12-03 12:40:17
【问题描述】:

我正在使用谷歌应用引擎。在一切正常之前,但现在当我调用 servlet 时,浏览器会花费很多时间然后显示:

 DeleteBooksServlet: com.google.apphosting.api.DeadlineExceededException: This request (0000000000000000) started at 2011/10/08 10:58:13.573 UTC and was still executing at 2011/10/08 10:59:13.036 UTC.

在那个 servlet 中,我有一个查询,它从数据库中获取所有书籍,然后删除它们。

在同一个 servlet 工作正常之前,但现在我得到了这个。为什么我现在得到这个东西?提前致谢。

【问题讨论】:

  • 超过 1 分钟?您要删除超过 1000 万本书吗?还是您在非索引列上使用WHERE 删除?阅读有关如何以及何时正确索引数据库表的信息。

标签: java eclipse google-app-engine exception servlets


【解决方案1】:

因为您的数据库中肯定有很多书籍,因此查询需要很长时间(超过 1 分钟),并且当请求很长时,GAE 会抛出此异常。

http://code.google.com/intl/en-US/appengine/docs/java/runtime.html#Quotas_and_Limits

【讨论】:

    【解决方案2】:

    删除 n 本书需要 O(n) 时间。当该时间超过请求限制时,您需要加快该操作。

    一个非常好的通用技术是将删除分成多个批次,其中一个批次可能会删除 100 本书)。然后使用任务队列框架来调度和运行批处理。有些人更进一步,使用MapReduce 框架来管理批处理。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2015-11-30
      • 2023-02-04
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      相关资源
      最近更新 更多