2010-10-07 31 views
0

我們有一個在雲端運行的工作角色,它輪詢Azure CloudQueue定期檢索Web角色爲我們提供的消息。目前,工作角色和Web角色位於同一個Cloud Service應用程序中,目前我們只運行一個實例。Azure Worker角色生成寫入意外錯誤到跟蹤日誌存儲

我們正在測試,我們有我們的日誌開啓等消息以及其他有用信息的內容將出現在我們的雲存儲,我們視圖中使用Cerebrata Azure診斷管理器。 (大產品順便說一句)

DiagnosticMonitorConfiguration diagConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();

diagConfig.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;

這一切都顯得非常好實際工作,但是偶爾我們簡單地具有「失敗」的消息跟蹤日誌看到一個詳細的消息。它看起來生成的代碼被封裝在一個try catch中,所以很奇怪我們沒有通過這些方法看到消息。

看來發生了一些事情不在我們的代碼控制範圍內,可能是工作人員角色正在重新啓動,或者雲操作系統正在檢測到只有通過重新啓動我們的輔助角色才能處理的重大錯誤。它恢復並繼續,所以對我們來說可能會發生什麼有點神祕。

我們還沒有確定的是我們是否正在失去一條消息。

任何幫助將不勝感激。 乾杯 Kindo馬來

回答

0

沒有堆棧跟蹤很難說太多,但設置爲verbose它記錄的很可能是你從你使用的dll的一個看到一些內部記錄。

例如,如果你運行的是導致某些類型的錯誤的Azure Table中查詢,因爲存儲客戶端庫正在迎頭趕上錯誤,跟蹤它,然後重試錯誤將被記錄3次。

如果您的try catch塊沒有捕獲到錯誤,那麼您可能沒有必要擔心。

如果隊列消息的傳遞能力對您很重要,您應該確保您使用CloudQueue.GetMessage的可見性超時重載,並且只有在完成處理後纔會刪除消息。你最終可能會處理一些消息兩次,但至少你會處理所有消息。

0

如果你的角色實例運行一段時間後,重新啓動得到,它往往是因爲你的退出過程由於未處理的異常。

+0

對不回覆和感謝花時間回答這個問題的人,我們還沒有解決,但取得了一些進展。又來了! – 2010-11-02 18:36:05