使用计划Azure函数暂时失败

2ledvvac  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(107)

在重负载期间,我的消费Azure函数超时,并出现以下错误-

1.系统无效操作异常:引发了异常,可能是由于暂时性故障。请考虑通过将“EnableRetryOnFailure()”添加到“UseSqlServer”调用来启用暂时性错误恢复。---〉System.Data.SqlClient.SqlException:客户端无法建立连接,因为在登录前的连接初始化过程中出错。可能的原因包括:客户端尝试连接到不受支持的SQL Server版本;服务器忙碌,无法接受新连接;或者服务器上存在资源限制(内存不足或允许的最大连接数)。(提供程序:TCP提供程序,错误:0 -远程主机强制关闭了现有连接。)---〉System.ComponentModel.Win32Exception:远程主机强制关闭了现有连接。
2.系统无效操作异常:超时已过。在从池中获取连接之前,超时时间已过。发生这种情况的原因可能是所有池连接都在使用中,并且已达到最大池大小。

我们使用的是具有500个DTU的Azure SQL数据库P4。我最初的想法是,由于可用工作线程较少,它可能会失败。但是,它们很好地在限制范围内,最大值为12%。我们知道,我们的一些LINQ查询速度较慢,性能不佳,但这将需要业务逻辑更改。
Azure基础架构端是否有任何解决方案或任何我可以查看的日志?

xt0899hw

xt0899hw1#

几个月前我们遇到了第一个问题,我们刚刚在数据库配置中添加了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);

相关问题