繁体   English   中英

消费计划 Azure 功能瞬时故障

[英]Consumption Plan Azure Functions Transient Failures

在重负载期间,我的消费 azure 功能超时并出现以下错误 -

1.System.InvalidOperationException:引发了可能是由于暂时性故障引起的异常。 考虑通过将“EnableRetryOnFailure()”添加到“UseSqlServer”调用来启用瞬态错误弹性。 ---> System.Data.SqlClient.SqlException: 客户端无法建立连接,因为在登录前的连接初始化过程中出错。 可能的原因包括:客户端试图连接到一个不受支持的版本的 SQL 服务器; 服务器太忙无法接受新连接; 或者服务器上存在资源限制(memory 不足或允许的最大连接数)。 (provider: TCP Provider, error: 0 - 现有连接被远程主机强制关闭。) ---> System.ComponentModel.Win32Exception: 现有连接被远程主机强制关闭。

2.System.InvalidOperationException:超时过期。 在从池中获取连接之前超时期限已过。 发生这种情况的原因可能是所有池连接都在使用中并且已达到最大池大小。

我们正在使用具有 500 个 DTU 的 Azure SQL 数据库 P4。 我最初的想法是,由于可用的工作线程较少,它可能会失败。 但是,它们完全在限制范围内,最大值为 12%。 我们知道 LINQ 查询中的一些查询很慢并且性能不佳,但这需要更改业务逻辑。

Azure 基础设施方面是否有任何解决方案或我可以查看的任何日志?

几个月前我们遇到了第一个问题,我们刚刚在数据库配置上添加了 EnableRetryOnFailure(),它解决了第一个问题。 下面给出示例代码

    var optionsBuilder = new DbContextOptionsBuilder<KasDbContext>();
    optionsBuilder.UseSqlServer(getConnectionString(), options =>
    {
        options.EnableRetryOnFailure(maxRetryCount: Constants.MaxRetryCountOnDbTransientFailure, maxRetryDelay: TimeSpan.FromSeconds(Constants.MaxDelaySecondsOnDbTransientFailure), errorNumbersToAdd: null);
    });
    return new DbContext(optionsBuilder.Options);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM