2011-10-08 117 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框架來管理批處理。

相關問題