巨大的,「不明原因」延遲幾乎總是熱身吞噬資源的請求。檢查你的appengine日誌,看看有多少api_ms和cpu_ms被用於熱身。
您可以通過在AppEngine上的控制面板增加你的最大未決延遲避免熱身。允許更高的等待時間意味着請求將在更新實例之前等待更長的時間。這可能會使每個請求稍慢一些,但您將避免重量級加載請求。
爲了幫助預熱請求,請確保您的AppEngine-web.xml中有:
<warmup-requests-enabled>true</warmup-requests-enabled>
這將導致的AppEngine調度搶先火了新的情況下,當電流那些被超載{即它在請求轉到新實例之前開始加載)。
然後,在受影響的緩慢的servlet,請確保你把時加載的啓動在你的web.xml:
<servlet>
<servlet-name>my-servlet</servlet-name>
<servlet-class>com.company.MyServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
時加載的啓動僅僅是確保您的高優先級servlet是隨時準備在熱身請求結束後立即去。
謝謝謝謝..是的,我用log.fine(..)記錄了很多東西,所以我應該啓用該級別,然後再看一遍。 –
我不相信100%是一個HTTP調用由不同的實例處理。可能嗎?因爲這可能是另一個問題,因爲花了很長時間來預熱新實例! –
@MicheleOrsi你不能在處理程序執行期間跳過實例 –