代码之家  ›  专栏  ›  技术社区  ›  Dennis C

Azure continuous webjob在某些情况下失败

  •  0
  • Dennis C  · 技术社区  · 7 年前

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

    [2017年11月15日14:46:23>e553e5:ERR]未处理的异常:Microsoft。WindowsAzure。存储StorageException:远程服务器返回错误:(404)未找到---&燃气轮机;系统网WebException:远程服务器返回错误:(404)未找到。 [2017年11月15日14:46:23>e553e5:ERR]微软。WindowsAzure。存储共享。协议httpresponseparasers。ProcessExpectedStatusCodeNoException[T](HttpStatusCode expectedStatusCode,HttpStatusCode actualStatusCode,T retVal,StorageCommandBase 1 cmd, Exception ex) in c:\Program Files (x86)\Jenkins\workspace\release_dotnet_master\Lib\Common\Shared\Protocol\HttpResponseParsers.Common.cs:line 50 [11/15/2017 14:46:23 > e553e5: ERR ] at Microsoft.WindowsAzure.Storage.Blob.CloudBlob.<DeleteBlobImpl>b__33(RESTCommand 1 cmd,HttpWebResponse resp,Exception ex,OperationContext ctx),c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Blob\CloudBlob。cs:3349行 [2017年11月15日14:46:23>e553e5:ERR]微软。WindowsAzure。存储果心遗嘱执行人。遗嘱执行人。c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Core\Executor\Executor中的EndGetResponse[T](IAsyncResult getResponseResult)。cs:299行 [2017年11月15日14:46:23>e553e5:ERR]--内部异常堆栈跟踪结束--- [2017年11月15日14:46:23>e553e5:ERR]微软。WindowsAzure。存储果心遗嘱执行人。遗嘱执行人。EndExecuteAsync[T](IAsyncResult结果)在c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Core\Executor\Executor中。cs:50号线 [2017年11月15日14:46:23>e553e5:ERR]微软。WindowsAzure。存储水滴。CloudBlob。c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Blob\CloudBlob中的EndDelete(IAsyncResult asyncResult)。cs:1729号线 [2017年11月15日14:46:23>e553e5:ERR]微软。WindowsAzure。存储果心Util。异步扩展<&燃气轮机;c__DisplayClass4。c:\Program Files(x86)\Jenkins\workspace\release\u dotnet\u master\Lib\ClassLibraryCommon\Core\Util\AsyncExtensions中的b\u 3(IAsyncResult ar)。cs:114号线 [2017年11月15日14:46:23>e553e5:ERR]--来自引发异常的前一个位置的堆栈结束跟踪--- [2017年11月15日14:46:23>e553e5:ERR]at系统。运行时。编译器服务。任务等待者。ThrowForNonSuccess(任务任务) [2017年11月15日14:46:23>e553e5:ERR]at系统。运行时。编译器服务。任务等待者。HandleNonSuccessAndDebuggerNotification(任务任务) [2017年11月15日14:46:23>e553e5:ERR]微软。蔚蓝色的网络作业。主办协议。PersistentQueueWriter 1.<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.TriggeredFunctionExecutor 1.d__0。MoveNext() [2017年11月15日14:46:23>e553e5:ERR]--来自引发异常的前一个位置的堆栈结束跟踪--- [2017年11月15日14:46:23>e553e5:ERR]微软。蔚蓝色的网络作业。主办计时器。背景ExceptionDispatcher<&燃气轮机;c_DisplayClass1。b__0() [2017年11月15日14:46:23>e553e5:ERR]at系统。穿线。ThreadHelper。ThreadStart\u上下文(对象状态) [2017年11月15日14:46:23>e553e5:ERR]at系统。穿线。ExecutionContext。运行(ExecutionContext ExecutionContext、ContextCallback回调、对象状态、Boolean preserveSyncCtx) [2017年11月15日14:46:23>e553e5:ERR]at系统。穿线。ExecutionContext。运行(ExecutionContext ExecutionContext、ContextCallback回调、对象状态) [2017年11月15日14:46:23>e553e5:ERR]at系统。穿线。ThreadHelper。ThreadStart()

    谁能给我一些关于如何调试这个的想法,因为我没有想法了。

    我的webjobs main如下所示:

     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();
        }
    

    processqueuemessage如下所示:

     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");
            }
        }
    

    所以我对每件事都有一个陷阱,所以我不明白它怎么会失败?

    提前谢谢。

    2 回复  |  直到 7 年前
        1
  •  0
  •   Alex AIT    7 年前

    我猜可能是你的队列或存储器中的文件本身出了问题。

    看起来它试图删除不再存在的文件。或者可能有“更大”的东西被删除了。

    深入研究后,可能还存在如何部署WebJob的问题。部署时有时可能会有差异?看看这些:

    Azure Web Job-The remote server returned 404

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

    Azure WebJob QueueTrigger message is not deleted from queue

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

        2
  •  0
  •   Dennis C    7 年前

    显然运行的是微软2.0.0以下的版本。蔚蓝色的Webjob使得不可能得到有用的答案。 当我最终开始尝试安装该版本时,它向我指出了一些有用的错误消息问题。

    问题与webjob core使用的DLL版本错误有关

    推荐文章