2011-05-10 63 views
2

我看到在標準的谷歌應用程序引擎的日誌一些神祕的時間字段這讓我好奇:GAE日誌字段中時間值的確切含義是什麼?

2011-05-09 21:56:00.577 /whatever 200 211ms 775cpu_ms 589api_cpu_ms 
0.1.0.1 - - [09/May/2011:21:56:00 -0700] "GET /whatever HTTP/1.1" 
200 34 - "AppEngine-Google; (+http://code.google.com/appengine)" 
"****.appspot.com" ms=212 cpu_ms=776 api_cpu_ms=589 cpm_usd=0.021713 
queue_name=__cron task_name=dc4d411120bc75ea8bbea773d23eaecc 

特別:毫秒cpu_msapi_cpu_ms,他們每個人的兩次略有不同值。

此外,當我使用下面的GET請求簡單結構自己記錄時間信息時,它會打印一個稍低的值。在這種情況下,特別是 msecs,與官方。

protected void doGet(HttpServletRequest req, HttpServletResponse resp) { 
    long t0 = System.currentTimeMillis(); 
    //Do the stuff 
    long t1 = System.currentTimeMillis(); 
    log.info("Completed in " + (t1-t0) + " msecs.\n"); 
} 

所以,我的問題是:爲什麼我的測量時間結果和cpu_ms值之間的差異以及如何降低它? GAE日誌字段中時間值的確切含義是什麼?

我想優化我的代碼,我意識到基於上述事實,大多數時間(近600毫秒!)不會直接在doGet請求中使用。 (我使用JPA,URLFetch,這是一個cron任務。)

回答

4

211ms:這是響應的時間,因爲它會被請求頁面的用戶感知。你會盡量減少它,以提高你的網站的速度。

775cpu_ms:根據App Engine documentation「CPU時間被報告在‘秒’,其等同於能夠由1.2 GHz的英特爾x86處理器中的時間量來執行的CPU週期的數目。實際使用的CPU週期數量因App Engine內部條件而異,因此爲了報告目的而使用此處理器作爲參考測量來調整此數字。

然後,正常情況下沒有」真實「時間:它應該與您使用System.currentTimeMillis()所測量的值不同,因爲它已經過調整。相反,您應該使用配額API來監視CPU使用情況:請參閱文檔here。 CPU時間是可計費的(免費配額爲每天6.5個CPU小時,並且您可以支付更多的CPU時間)。然後,你會盡量減少它,以便少付。

589api_cpu_ms:這是由API使用所花費的adjuested CPU時間(數據存儲,用戶API等)

相關問題