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

相关问题