2012-09-12 20 views
4

我使用GAE爲我的小服務。我每天只有3或4個客戶,而且從不在同一時間。 我的服務是用Java編寫的,具有Spring MVC,spring security和objectify。 所以啓動時間可能需要15到20秒。爲什麼一個客戶剛剛在GAE上創建一個新的實例在熱身請求

爲了避免我的客戶這個啓動延遲激活我的帳單和設定分鐘空閒實例1(1爲最大值)。 但即使有了這種配置,有時候我的客戶必須等待15秒才能獲得第一個請求。

正如你可以只是一個預熱請求(沒用過),客戶端啓動一個新的實例後,在我的日誌看(從來沒有後來被用來):

例1:

2012-09-10 23:23:31.442 /myIndex.do 200 18997ms 15kb Mozilla 
x.x.x.x - - [10/Sep/2012:14:23:31 -0700] "GET /myIndex.do HTTP/1.1" 200 15048 - "Mozilla" "www.mysite.fr" ms=18997 cpu_ms=10442 cpm_usd=0.001682 loading_request=1 instance=00c61b117c2e937c04807734919256d8a5cee8 

2012-09-10 23:05:05.260 /_ah/warmup 200 14225ms 0kb 
0.1.0.3 - - [10/Sep/2012:14:05:05 -0700] "GET /_ah/warmup HTTP/1.1" 200 0 - - "3.360029581669528772.mywebsite.appspot.com" ms=14225 cpu_ms=8969 loading_request=1 instance=00c61b117c10680b3f12b4c8f80f7b7191ce8bab 

例2 :

2012-08-31 18:51:16.096 /myIndex.do 200 14676ms 14kb Mozilla 
x.x.x.x - - [31/Aug/2012:09:51:16 -0700] "GET /myIndex.do HTTP/1.1" 200 14954 "http://www.mysite.fr/myIndex.do" "Mozilla" "www.mysite.fr" ms=14676 cpu_ms=8514 cpm_usd=0.001671 loading_request=1 pending_ms=1022 instance=00c61b117cf69060fbcfbfe9dbd6ed735b869817 

2012-08-31 18:39:43.895 /_ah/warmup 200 19812ms 0kb 
0.1.0.3 - - [31/Aug/2012:09:39:43 -0700] "GET /_ah/warmup HTTP/1.1" 200 0 - - "3.360029581669528772.mysite.appspot.com" ms=19812 cpu_ms=10243 loading_request=1 instance=00c61b117c1d4303f8698a615149d5a40dcac7 

我擔心我已經有這種類型的問題有4個客戶機:/

,也發現了類似的問題http://code.google.com/p/googleappengine/issues/detail?id=7865

任何人都可以確認,如果這兩個問題是相關的?

THX

塞繆爾

回答

0

我不知道我能正確地回答你的問題,但我會盡我所能,讓你在正確的軌道上。

預熱請求是由前「活」的請求被髮送到你的應用程序實例的應用程序服務器調用。這是一個機會,可以調用/初始化儘可能多的代碼,以便將其加載到內存中。當「實時」請求觸及你的應用程序時,它會很快執行。看看你的日誌,對/myIndex.do的請求需要14s才能執行。按照任何標準這是相當長的。

這使我建議如下:

  1. 揣摩哪些庫要導入導致請求那麼長。確定之後,確保您在預熱處理程序中加載/使用它們。
  2. 如果它不是一個庫加載問題,這意味着你正在做一大堆的處理您的請求。我建議將它的一部分委託給異步處理程序(使用AJAX)。
  3. 最後,你可以一個計劃任務來調用您的定期/myindex.do(每分鐘左右),以確保它是「熱」。
+0

不起作用。谷歌確認這是一個錯誤 – Samuel

+0

你對熱身要求的想法是正確的,但對問題中描述的情況錯誤。對index.do的請求的日誌條目清楚地聲明「loading_request = 1」,表明這些請求是針對新實例並且不使用現有的('暖')。這些請求需要15-19秒,因爲這些新實例必須首先啓動。 –

相關問題