2012-12-11 107 views
0

我正在通過檢查x-appengine-estimated-cpm-us-dollars標頭來測量GAE請求的成本。這很好用,並與x-appengine-resource-usagex-traceurl我甚至可以得到更詳細的信息。測量Google App Engine中的任務隊列成本

但是,我的應用程序的大部分運行在任務隊列的上下文中。因此,實例小時成本的很大一部分是由隊列消耗的。每個時間代碼在請求之外執行,其成本不包括在x-appengine-estimated-cpm-us-dollars標題中。

我正在尋找一種方法來衡量每個請求所消耗的全部成本。即由請求本身生成的成本由此請求添加的任務成本。

+1

如果您檢查appengine.appspot.com中的日誌,它將列出所有請求,並且還會告知您每個請求的cpm美元。因此,您可以將正常請求和任務請求的cpm一起添加。 – lucemia

+0

謝謝!這對於手動測試是可以的。但是,我怎樣才能以編程方式獲得這些信息。例如。有沒有我可以訪問的網址?另外,如何將這些任務的成本與原始請求相關聯?我不想手動測試成本,而是想自動衡量成本,看看它們隨時間變化的情況。 – Ingo

回答

1

這是一個矯枉過正。有一個工具,你可以下載谷歌應用程序引擎日誌,並將其轉換爲SQLite。 http://code.google.com/p/google-app-engine-samples/source/browse/trunk/logparser/logparser.py

有了這個工具,用於任務請求和正常請求的cpm usd將全部下載到一起。您可以將每日日誌存儲到單獨的sqlite文件中,並根據需要執行儘可能多的分析。

將任務的成本與原始請求相關聯。使用此工具下載的日誌數據包括logging模塊的完整輸出。

  1. 所以,你可以簡單地記錄了產生原始請求
  2. ID ID傳遞給任務。
  3. 在任務請求中再次記錄收到的ID。
  4. 通過ID查找正常和任務請求對。

例如:

# in org request 
a_id = genereate_a_random_id() 
logging.info(a_id) # the id will be included 

taskqueue.add(url='/path_to_task', params={'id': a_id}) 


# in task request 
a_id = self.request.get('id') 
logging.info(a_id) 

EDIT1

我認爲是估計普通的請求+任務要求的費用另一種可能的方式。 訣竅是更改要同步的異步任務(假定成本將相同)。 我沒有嘗試過,但嘗試起來要容易得多。

# in org request, add a variable to identify debug 
debug = self.request.get('DEBUG') 

if debug: 
    self.redirect('/path_to_task') 
else: 
    taskqueue.add(url='/path_to_task') 

因此,在用DEBUG參數測試正常請求時。它將首先處理正常請求,然後返回正常請求的x-appengine-estimated-cpm-us-dollars。稍後它會將您的測試客戶端重定向到相關任務請求(任務請求也可以通過url客戶端作爲正常請求進行訪問和觸發),並返回任務請求的x-appengine-estimated-cpm-us-dollars。您可以簡單地將它們添加到一起以獲得總成本。

+1

謝謝!我同意解析日誌是一個解決方案。但是,如果appstats包含對後臺工作的引用(例如提交的任務的名稱),則可以簡化。每次調用***。appspot.com/appstats/stats?time=123&type=json**都會包含對任務隊列API的調用,如** taskqueue.BulkAdd **。所以,也許更強大的解決方案是將其更改爲包含任務名稱** taskqueue.BulkAdd [task1,task2] **。因此,通過使用提交的任務名稱擊中另一個appstats URL,可以檢索後臺工作成本。我還沒有找到功能要求。 – Ingo

+1

@Ingo我添加另一種可能的方法來解決這個問題。 – lucemia

+1

謝謝,這是一個好主意!這樣我們就可以測量確切的成本,因爲一切都是同步執行的。不幸的是,這個應用程序在調試和生產過程中會有不同的表現。例如,在調試中,與prod相比,應用程序的響應速度要慢很多。但是鑑於今天GAE提供的功能,這可能是最好的解決方案。 – Ingo

相關問題