2011-08-09 167 views
1

我在GAE上創建了一個類似於Facebook的搜索欄,當您在搜索欄中輸入名稱和圖片時,會顯示您的姓名和圖片。例如打字jo 會帶來「約翰史密斯」和「邁克爾喬丹」的下降。這個 在開發服務器上工作得很好,甚至在生產中確實可以正常工作,當用戶在加載 頁面後立即搜索。如果我在頁面上等待,說30秒到一分鐘。然後嘗試 並使用搜索欄,顯示 結果需要很長時間。有時只要15秒鐘,當時它曾經是 直接。有人能解釋這裏發生了什麼嗎?有沒有 我可以保持這個請求熱?此外,如果我搜索喬然後等待,獲得結果,刪除喬,然後鍵入另一個搜索,我的結果立即顯示。這讓我覺得有些東西如果不能保持活躍就會關閉。GAE:緩慢的延遲請求

我的搜索欄實現了JQuery 自動完成欄,並使用jquery ajax獲取結果。

+0

您的管理控制檯日誌顯示哪些請求? –

+0

我敢打賭,您在後端的查詢很慢,並且您立即得到結果僅僅是因爲JQuery自動完成緩存了以前的結果。 – systempuntoout

+0

@systempuntoout不是這種情況。我的請求通常會在100毫秒內返回。看起來我的請求正在導致創建新的實例,即使實例沒有延遲。 – Lumpy

回答

0

檢查它是否實際開始新的實例。轉到儀表板和圖表部分中的組合選擇「實例」而不是請求/秒。

+0

似乎爲我的請求創建了一個動態實例。即使有3個駐留實例可用,但沒有延遲。這個動態實例能夠立即被殺死,那麼另一個必須被創建? – Lumpy

+0

您是否打開了「線程安全」選項?默認情況下,GAE不允許並行請求。你需要打開它。理論上講,如果多線程的話,GAE不需要爲新的請求啓動新的實例。請參閱此處的最後一節:http://code.google.com/appengine/docs/java/config/appconfig.html#Using_Concurrent_Requests – okrasz

0

發生這種情況通常是因爲如果您的應用程序流量較少,那麼GAE會通過啓動新的JVM「加熱」,並且需要幾秒鐘的時間。

更多關於「加載請求」的here

解決方法是在您的應用程序中使用Always On模式。請注意,這是一項高級功能。

+0

我一直在爲這個應用程序打開 – Lumpy

+0

@Lumpy - 你可以檢查你的日誌,看看有沒有開始一個新的過程後,你保持空閒一點點?這會給你一個提示,看看發生了什麼。 – Kal

+0

如果正在創建一個新實例,有什麼我可以解決這個問題? – Lumpy