1

問題在於每天安排一個長時間運行的azure webjob。每次運行需要2-4個小時進行數據分析。唯一的依賴是使用Azure SQL數據庫通過EF和Azure存儲,只需在App.Config上設置AzureWebJobsDashboard和AzureWebJobsStorage連接,使用webjob SDK在VS上進行標準設置。大部分時間的網絡工作都與EF的SaveChanges()一起使用。 我也做了大量的日誌記錄來監視aprox 3000行控制檯輸出的進度。 Web應用程序配置爲Allways ON,並且WEBJOBS_IDLE_TIMEOUT設置爲非常高的數字。由於Azure存儲超時導致長時間運行webjob失敗

以下是錯誤的日誌:

[二○一六年十月二十○日七時48分17秒> 492c46:ERR]未處理的異常:Microsoft.WindowsAzure.Storage.StorageException:客戶端無法完成在指定的時間內運行。 ---> System.TimeoutException:客戶端無法在指定的超時時間內完成操作。

[2016年10月20日7時48分17秒> 492c46:ERR] ---內部異常堆棧跟蹤的結尾---

[2016年10月20日7時48分17秒> 492c46:在Microsoft.WindowsAzure.Storage.Core.Util.StorageAsyncResult`1.End()

[10/20/2016 07:48:17> 492c46:ERR] .EndUploadText(IAsyncResult asyncResult)

[10/20/2016 07:48:17> 492c46:ERR] at Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions。 <> c__DisplayClass4.b__3(IAsyncResult ar)

回答

1

這是一個幾個月大,但對於那些還在後面......

你提到你做了很多的日誌記錄。有一個記錄處理something similar的問題。顯然,WebJobs SDK會將日誌數據定期保存到blob存儲中。如果您使用大量帶寬或消耗大量資源,則可能會嘗試從SDK中嘗試保存到BLOB存儲的超時。請注意堆棧跟蹤中的上傳呼叫。

我在一個懲罰電線很不錯的過程中偶爾看到這一點,所以我通過WebJobs日誌工具禁用了日誌記錄。

0

如果觸發的webjob空閒,沒有cpu時間或輸出一段時間,則會中止。嘗試並通過將配置WEBJOBS_IDLE_TIMEOUT設置爲大數目(例如3600)來增加它。

如果您的實例未配置爲始終打開,它也可能被中止。

如果這沒有幫助,你應該嘗試處理日誌記錄的數量。難道你會嘗試寫很多信息來加快速度嗎?看看this answer看看是否可以。

+0

感謝您指出,我已將WEBJOBS_IDLE_TIMEOUT配置爲大量數據,並且我的實例始終處於開啓狀態。我將通過編輯上面的問題來添加這兩點。關於你的第三個建議,我的控制檯輸出是大約3000行,但我生成每個至少一秒鐘。 – donquijote

+0

你看過https://github.com/Azure/azure-webjobs-sdk/issues/755嗎?嘗試降級您的Azure存儲SDK。 – iikkoo

相關問題