2011-10-08 81 views
0

我正在使用谷歌应用程序引擎。之前的一切工作正常,但现在我的呼唤一个servlet,浏览器需要花费大量的时间,然后显示这一点:为什么我得到DeadlineExceededException:在我的web应用程序中?

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工作正常,但现在我正在此。为什么我现在得到这个东西?提前致谢。

+0

超过1分钟?你是否删除了超过1000万本书或某些东西?或者,您是否在非索引列上使用WHERE进行删除?阅读关于如何以及何时正确索引数据库表。 – BalusC

回答

2

删除ň书籍需要O(n)的时间。当时间超过请求限制时,您需要更快地执行该操作。

一个很好的一般方法是打破删除成批,其中一个批次可以删除,也就是说,100本书)。然后使用任务队列框架计划和运行批次。有些人进一步考虑了这一点,并使用MapReduce框架来管理批处理。

相关问题