代码之家  ›  专栏  ›  技术社区  ›  Rakesh Kumar

Cosmos DB:请求失败,因为客户端无法跨1个区域建立到1个端点的连接

  •  0
  • Rakesh Kumar  · 技术社区  · 6 年前

    下面是HTTP触发Azure功能的应用程序洞察中记录的异常。

    请求失败,因为客户端无法跨1个区域建立到1个终结点的连接。在尝试请求期间,客户端CPU过载

    “outerId:”0“,”消息“:”响应状态代码不表示 成功:服务不可用(503);亚状态:0;活动ID: 35d16569-41da-42ed-bc5c-8f9a5c49078e;原因:(请求失败。) 因为客户端无法建立到1个终结点的连接 跨越1个地区。客户端CPU在尝试运行期间过载 要求\r\n活动ID:35d16569-41da-42ed-bc5c-8f9a5c49078e 参见《宇宙诊断》,Windows/10.0.14393 cosmos netstandard sdk/3.9.0);“,“parsedStack”:[{“assembly”:“Microsoft.Azure.Cosmos.Client, 版本=3.9.1.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的宇宙回应信息。EnsureAccessStatusCode“,”级别“:0,“行“:0},{”程序集“:”Microsoft.Azure.Cosmos.Client, 版本=3.9.1.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的宇宙ReadFeedResponse 1.CreateResponse","level":1,"line":0},{"assembly":"Microsoft.Azure.Cosmos.Client, Version=3.9.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35","method":"Microsoft.Azure.Cosmos.FeedIteratorCore 1+6。MoveNext,“level”:2,“line”:0},{“assembly”:“System.Private.CoreLib,Version=4.0.0.0,Culture=neutral, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。例外服务。例外DispatchInfo。抛出“,”级别“:3,“行“:0},{”程序集“:”System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。ThrowForNonSuccess,level:4,line:0},{assembly:“FleetHub.Notifications.Domain, 版本=1.0.0.0,文化=中性, PublicKeyToken=null,“方法”:“FleetHub”。通知。领域仓库。宇宙还原论 1+<GetItemsAsync>d__10.MoveNext","level":5,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw","level":6,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess","level":7,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification","level":8,"line":0},{"assembly":"FleetHub.Notifications.Queries, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","method":"FleetHub.Notifications.Queries.Handlers.RetrieveNotificationQueryHandler+<GetNotifications>d__4.MoveNext","level":9,"line":41,"fileName":"D:\\a\\144\\s\\FleetHub.Notifications.Queries\\Handlers\\RetrieveNotificationQueryHandler.cs"},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw","level":10,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess","level":11,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification","level":12,"line":0},{"assembly":"FleetHub.Notifications.Queries, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","method":"FleetHub.Notifications.Queries.Handlers.RetrieveNotificationQueryHandler+<GetNotificationSummary>d__5.MoveNext","level":13,"line":54,"fileName":"D:\\a\\144\\s\\FleetHub.Notifications.Queries\\Handlers\\RetrieveNotificationQueryHandler.cs"},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw","level":14,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess","level":15,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification","level":16,"line":0},{"assembly":"FleetHub.Notifications.Queries, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","method":"FleetHub.Notifications.Queries.Handlers.RetrieveNotificationQueryHandler+<HandleAsync>d__3.MoveNext","level":17,"line":28,"fileName":"D:\\a\\144\\s\\FleetHub.Notifications.Queries\\Handlers\\RetrieveNotificationQueryHandler.cs"},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw","level":18,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess","level":19,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification","level":20,"line":0},{"assembly":"FleetHub.Notifications.Azure.Functions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null","method":"FleetHub.Notifications.Azure.Functions.Notifications.RetrieveNotifications+<Run>d__0.MoveNext","level":21,"line":39,"fileName":"D:\\a\\144\\s\\FleetHub.Notifications.Azure.Functions\\Notifications\\RetrieveNotifications.cs"},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw","level":22,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess","level":23,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification","level":24,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter 1.GetResult,“level”:25,“line”:0},{“assembly”:“Microsoft.Azure.WebJobs.Host, 版本=3.0.23.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的WebJobs。主办遗嘱执行人。函数调用程序 2+<InvokeAsync>d__10.MoveNext","level":26,"line":52,"fileName":"C:\\projects\\azure-webjobs-sdk-rqm4t\\src\\Microsoft.Azure.WebJobs.Host\\Executors\\FunctionInvoker.cs"},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw","level":27,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess","level":28,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification","level":29,"line":0},{"assembly":"System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e","method":"System.Runtime.CompilerServices.TaskAwaiter 1.GetResult,“level”:30,“line”:0},{“assembly”:“Microsoft.Azure.WebJobs.Host, 版本=3.0.23.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的WebJobs。主办遗嘱执行人。FunctionExecutor+FunctionInvocationFilterInvoker+d_10。MoveNext,level:31,line:1116,fileName:“C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft。蔚蓝色的WebJobs。主机\执行器\函数执行器。cs“},{”assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。例外服务。例外DispatchInfo。抛出“,”级别“:32,“行“:0},{”程序集“:”Microsoft.Azure.WebJobs.Host, 版本=3.0.23.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的WebJobs。主办遗嘱执行人。FunctionExecutor+FunctionInvocationFilterInvoker+d_10。MoveNext,“级别”:33,“行”:1154,“文件名”:“C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft。蔚蓝色的WebJobs。主机\执行器\函数执行器。cs“},{”assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。例外服务。例外DispatchInfo。抛出,级别:34,行:0},{assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。ThrowForNonSuccess,level:35,line:0},{assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。HandleNonSuccessAndDebuggerNotification,“level”:36,“line”:0},{“assembly”:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者'1。GetResult,level:37,line:0},{“assembly”:“Microsoft.Azure.WebJobs.Host, 版本=3.0.23.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的WebJobs。主办遗嘱执行人。函数执行器+d__27。MoveNext,level:38,line:547,fileName:“C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft。蔚蓝色的WebJobs。主机\执行器\函数执行器。cs“},{”assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。例外服务。例外DispatchInfo。抛出“,”级别“:39,“行“:0},{”汇编“:”System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。ThrowForNonSuccess,level:40,line:0},{assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。HandleNonSuccessAndDebuggerNotification,“level”:41,“line”:0},{“assembly”:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。GetResult,level:42,line:0},{“assembly”:“Microsoft.Azure.WebJobs.Host, 版本=3.0.23.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的WebJobs。主办遗嘱执行人。函数执行器+d__26。MoveNext,“级别”:43,“行”:492,“文件名”:“C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft。蔚蓝色的WebJobs。主机\执行器\函数执行器。cs“},{”assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。例外服务。例外DispatchInfo。抛出“,”级别“:44,“行“:0},{”汇编“:”System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。ThrowForNonSuccess,level:45,line:0},{assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。HandleNonSuccessAndDebuggerNotification,“level”:46,“line”:0},{“assembly”:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。GetResult,level:47,line:0},{“assembly”:“Microsoft.Azure.WebJobs.Host, 版本=3.0.23.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的WebJobs。主办遗嘱执行人。函数执行器+d__25。MoveNext,“级别”:48,“行”:438,“文件名”:“C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft。蔚蓝色的WebJobs。主机\执行器\函数执行器。cs“},{”assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。例外服务。例外DispatchInfo。抛出“,”级别“:49,“行“:0},{”汇编“:”System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。ThrowForNonSuccess,level:50,line:0},{assembly:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。HandleNonSuccessAndDebuggerNotification,“level”:51,“line”:0},{“assembly”:“System.Private.CoreLib, 版本=4.0.0.0,文化=中性, PublicKeyToken=7cec85d7bea7798e,“方法”:“系统”。运行时。编译器服务。任务等待者。GetResult,“level”:52,“line”:0},{“assembly”:“Microsoft.Azure.WebJobs.Host, 版本=3.0.23.0,文化=中性, PublicKeyToken=31bf3856ad364e35,“方法”:“微软。蔚蓝色的WebJobs。主办遗嘱执行人。函数执行器+d__19。MoveNext,“级别”:53,“行”:245,“文件名”:“C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft。蔚蓝色的WebJobs。主机\执行器\函数执行器。cs“}],“键入”:“Microsoft。蔚蓝色的宇宙宇宙性知觉“,”id:“23479096”}]

    Azure功能:

    public static class RetrieveNotifications
        {
            [FunctionName(nameof(RetrieveNotifications))]
            public static async Task<IActionResult> Run(
                [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
                [Inject] ILoggingService loggingService,
                [Inject] IQueryValidator queryValidator,
                [Inject] IQueryHandler<RetrieveNotificationQuery, NotificationSummaryResponse> queryHandler)
            {
                var logger = new Logger(loggingService);
    
                try
                {
                    logger.Info($"Retrieve Notifications request received on {nameof(RetrieveNotifications)}");
    
                    IActionResult actionResult = null;
    
                    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    
                    var query = requestBody.AsPoco<RetrieveNotificationQuery>();
    
                    if (queryValidator.Validate<RetrieveNotificationQuery>(req, query, new RetrieveNotificationQueryValidator(), logger, ref actionResult))
                    {
                        var response = await queryHandler.HandleAsync(query, logger);
                        actionResult = new OkObjectResult(response);
                    }
                    return actionResult;
                }
                catch (Exception ex)
                {
                    logger.Error($"Exception while processing {nameof(RetrieveNotifications)}", ex,
                    nameof(RetrieveNotifications));
    
                    throw;
                }
            }
        }
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   Matias Quaranta    6 年前

    您的异常包含连接问题的根源:

    The client CPU was overloaded during the attempted request
    

    这意味着CPU不足,无法在预期的超时时间间隔内处理TCP请求。在官方文件中,原因如下: https://docs.microsoft.com/azure/cosmos-db/troubleshoot-dot-net-sdk-request-timeout#high-cpu-utilization

    检查您的实例指标,看看是否需要调整实例的大小来处理您正在执行的操作负载。 我看到您正在向函数中注入引用,我猜这些是CosmosClient的单例实例(如果不是,应该是)。

        2
  •  0
  •   Peter Csala Matheus Robert Lichtnow    5 年前
    var options = new CosmosClientOptions() { ConnectionMode = ConnectionMode.Gateway };
    
    var client = new CosmosClient(endpoint, key, options);
    

    这对我有用。

    推荐文章