Azure连续Web作业在某些情况下会失败



我有一个在azure上运行的连续Web作业,在8小时前进行了更大规模的部署后,在某些情况下,它的状态为从未完成,而在其他情况下,则完成了作业。我已经启用了我能找到的所有日志记录,并花了相当多的时间试图找出问题所在

我似乎能找到的唯一日志错误信息来自job_log,它状态为:

[11/15/2017 14:46:23>e53e5:ERR]未处理的异常:Microsoft.WindowsAzure.Storage.StorageException:远程服务器返回错误:(404)找不到。--->System.Net.WebException:远程服务器返回错误:(404)找不到。[11/15/2017 14:46:23>e53e5:ERR]在Microsoft.WindowsAzure.Storage.Shared.Protocol.HttpResponseParsers.ProcessExpectedStatusCodeNoException[T](HttpStatusCode expectedStatusCode,HttpStatusCode actualStatusCode、T retVal,StorageCommandBase1 cmd, Exception ex) in c:Program Files (x86)Jenkinsworkspacerelease_dotnet_masterLibCommonSharedProtocolHttpResponseParsers.Common.cs:line 50 [11/15/2017 14:46:23 > e553e5: ERR ] at Microsoft.WindowsAzure.Storage.Blob.CloudBlob.<DeleteBlobImpl>b__33(RESTCommand1 cmd,HttpWebResponse resp,Exception ex,OperationContext ctx)在c:\Program Files(x86)中\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlob.cs:line 3349[11/15/2017 14:46:23>e53e5:ERR],位于Microsoft.WindowsAzure.Storage.Core.Executor.EndGetResponse[T](IAsyncResult getResponseResult),位于c:\Program Files(x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executiator\Executiator.cs:line 299[11/15/2017 14:46:23>e53e5:ERR]-内部异常堆栈跟踪结束---[11/15/2017 14:46:23>e53e5:ERR],位于Microsoft.WindowsAzure.Storage.Core.Executor.EndExecuteAsync[T](IAsyncResult结果)中,位于c:\Program Files(x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Core\Executor\Executor.cs:line 50[11/15/2017 14:46:23>e53e5:ERR],位于Microsoft.WindowsAzure.Storage.Blob.CloudBlob.EndDelete(IAsyncResult asyncResult)中,位于c:\Program Files(x86)\Jenkins\workspace\release_dotnet_master\Lib\ClassLibraryCommon\Blob\CloudBlob.cs:line 1729[11/15/2017 14:46:23>e53e5:ERR],位于Microsoft.WindowsAzure.Storage.Core.Util.AsyncExtensions。<>c:\Program Files(x86)\Jenkins\workspace\release.dotnet_master\Lib\ClassLibraryCommon\Core\Util\AsyncExtensions.cs:line 114中的c_DisplayClass4.b_3(IAsyncResult ar)[11/15/2017 14:46:23>e53e5:ERR]-从引发异常的前一位置开始的堆栈跟踪结束---[11/15/2017 14:46:23>e53e5:ERR]在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)[11/15/2017 14:46:23>e53e5:ERR]在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)[11/15/2017 14:46:23>e53e5:ERR],位于Microsoft.Azure.WebJobs.Host.Protocols.PersistentQueueWriter1.<DeleteAsync>d__6.MoveNext() [11/15/2017 14:46:23 > e553e5: ERR ] --- End of stack trace from previous location where exception was thrown --- [11/15/2017 14:46:23 > e553e5: ERR ] at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) [11/15/2017 14:46:23 > e553e5: ERR ] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [11/15/2017 14:46:23 > e553e5: ERR ] at Microsoft.Azure.WebJobs.Host.Loggers.CompositeFunctionInstanceLogger.<DeleteLogFunctionStartedAsync>d__e.MoveNext() [11/15/2017 14:46:23 > e553e5: ERR ] --- End of stack trace from previous location where exception was thrown --- [11/15/2017 14:46:23 > e553e5: ERR ] at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) [11/15/2017 14:46:23 > e553e5: ERR ] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [11/15/2017 14:46:23 > e553e5: ERR ] at Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.<TryExecuteAsync>d__1.MoveNext() [11/15/2017 14:46:23 > e553e5: ERR ] --- End of stack trace from previous location where exception was thrown --- [11/15/2017 14:46:23 > e553e5: ERR ] at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) [11/15/2017 14:46:23 > e553e5: ERR ] at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) [11/15/2017 14:46:23 > e553e5: ERR ] at Microsoft.Azure.WebJobs.Host.Executors.TriggeredFunctionExecutor1.d__0.MoveNext()[11/15/2017 14:46:23>e53e5:ERR]-从引发异常的前一位置开始的堆栈跟踪结束---[11/15/2017 14:46:23>e53e5:ERR]在Microsoft.Azure.WebJobs.Host.Timers.BackgroundExceptionDispatcher。<>c_DisplayClass1.b_0()[11/15/2017 14:46:23>e53e5:ERR]在System.Threading.ThreadHelper.ThreadStart_Context(对象状态)[11/15/2017 14:46:23>e53e5:ERR]在System.Threading.ExecutionContext.RunInternal(ExecutionContext ExecutionContext,ContextCallback回调,Object state,Boolean preserveSyncCtx)[11/15/2017 14:46:23>e53e5:ERR]在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback callback,Object state,Boolean preserveSyncCtx)[11/15/2017 14:46:23>e53e5:ERR]在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,Object state)[11/15/2017 14:46:23>e53e5:ERR]在System.Threading.ThreadHelper.ThreadStart()

有人能给我一些关于如何调试的想法吗,因为我没有主意了。

我的网络作业主要如下:

static void Main()
{
var host = new JobHost();
var config = new JobHostConfiguration();
config.Queues.MaxPollingInterval = new TimeSpan(0,0,0,30);
config.Queues.MaxDequeueCount = 3;
// The following code ensures that the WebJob will be running continuously
host.RunAndBlock();
}

并且processqueue消息看起来像:

public static void ProcessQueueMessage([QueueTrigger("importqueue")] string msg)
{
try
{
WorkerWebJobCore wwjc = new WorkerWebJobCore();
wwjc.RunCore(msg, TableStorageAccessResources.ImportQueue,
TableStorageAccessResources.TableStorageDataOneId,
TableStorageAccessResources.TableStorageDataOnePassword);
}
catch (Exception e)
{
CommunicatorLog.Log.LogError("WebJobWorker","WebJobWorker","Error in processing queue message","ERRWJWF01");
}
}

所以我对每件事都有把握,所以我不明白它怎么会失败?

提前谢谢。

我的猜测是,有什么东西扰乱了您的队列或存储器本身中的文件。

看起来它试图删除不再存在的文件。或者某个"更大"的东西正在被删除。

深入研究后,这可能也是您如何部署WebJob的问题。也许部署时有时会有所不同?看看这些:

Azure Web作业远程服务器返回404

https://github.com/Azure/azure-webjobs-sdk/issues/922

Azure WebJob QueueTrigger消息未从队列中删除

https://github.com/Azure/azure-webjobs-sdk/issues/645

显然运行的是微软2.0.0以下的版本。蔚蓝色的网络作业让你无法得到有用的答案。当我终于抽出时间尝试安装那个版本时,它向我指出了一些有用的错误消息。

关于webjob核心与的工作方式,问题与错误版本的dll有关

最新更新