当前位置: 首页 > 知识库问答 >
问题:

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

田博超
2023-03-14

下面异常记录在应用程序洞察HTTP触发器Azure函数中。

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

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

共有1个答案

吕宇定
2023-03-14

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

The client CPU was overloaded during the attempted request

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

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

 类似资料:
  • 连接失败客户端一般会有两种报错,connection refuse 和 connection timeout connection refuse(连接拒绝) 一般是以下原因: 1、客户端连接的端口错了 2、客户端连接的域名或者ip错了 3、如果客户端使用了域名连接,域名可能指向了错误的服务器ip 4、服务端没有启动或者端口没有被监听 5、使用了网络代理软件 6、服务端监听ip与访问地址不在一个地址

  • 问题内容: 我很好奇为什么要尝试将2个客户端连接到RedisDB而不是1个?每次我连接时,都会看到另外两个客户端连接到我的RedisDB。 问题答案: 因为redis要求交互式命令和发布/订阅的单独连接。如果您不使用pub / sub,则可以告诉选项以禁用命令,在这种情况下,我 认为 第二个连接未建立。

  • 我使用生成的app engine Android客户端(jar lib)。31个客户中有30个没有问题。但三星的一款平板电脑拒绝连接并给出了这样的死机: Android:4.4.4制造商:三星型号:SM-T533-日期:Mon Aug 03 09:49:03 CEST 2015 ApiUtils类:

  • 我们有一个公司范围的Nexus 3服务器 拥有我们自己的文物和 用作Maven Central和其他回购的代理。 开发人员使用两个存储库: maven针对所有已发布/稳定的工件发布版本策略“Release”和 版本策略为“快照”的所有快照工件的maven快照 这两个存储库都用于Gradle构建: 现在,当Gradle试图解决快照依赖关系时,它会询问releases存储库,Nexus会用 而构建失败

  • 我想从数据库中选择值,但出现错误 我不知道我的代码哪里错了。。这是我在dbHelper中的代码。 我想得到其他类的值。我使用这个代码。 我一直在搜索,但没有找到错误的解决方案。有人能帮我吗?我真的需要解决办法,请帮帮我。。谢谢当做

  • 我正在尝试使用Apache HTTPClient 4.5.1来执行一些rest请求。不幸的是,每一秒的请求都会以“java.net.SocketTimeoutException:Read timed out”结尾(如果没有设置套接字超时,则永远挂起)。 我正在这样构建我的客户: 之后,我像这样执行我的请求(在同一个 Http 客户端实例上): 如果我开始为每个请求使用一个新的HttpClient实