C# 升级到netcoreapp3.1和功能v3时,功能应用程序出现错误
我正在调查一个专门应用服务计划中部署在Azure上的功能应用上发生的奇怪行为。当升级到netcore3.1和Functions V3时,当达到DTU限制时,应用程序在与SQL DB的连接上开始出错 功能应用程序由3个项目组成:C# 升级到netcoreapp3.1和功能v3时,功能应用程序出现错误,c#,azure,azure-functions,.net-core-3.1,azure-function-app,C#,Azure,Azure Functions,.net Core 3.1,Azure Function App,我正在调查一个专门应用服务计划中部署在Azure上的功能应用上发生的奇怪行为。当升级到netcore3.1和Functions V3时,当达到DTU限制时,应用程序在与SQL DB的连接上开始出错 功能应用程序由3个项目组成: ProductService.dll(包含函数)-netstandard2.0 ProductService.Indexer.dll(库)-netstandard2.0 ProductService.Shared.dll(库)-netstandard2.0 函数应用程
- ProductService.dll(包含函数)-netstandard2.0
- ProductService.Indexer.dll(库)-netstandard2.0
- ProductService.Shared.dll(库)-netstandard2.0
{
"functionTimeout": "12:00:00",
"version": "2.0",
"extensions": {
"queues": {
"visibilityTimeout": "00:05:00",
"batchSize": 16,
"newBatchThreshold": 8
}
}
}
唯一的代码更改(在升级到netcoreapp3.1期间)是使用HttpClientFactory而不是HttpClient的自定义包装器。
部署netcoreapp3.1版本的ProductService并将azure Function app更改为v3时,应用程序开始出错,因为达到了SQL DB DTU限制。
我一直在努力理解,我一直在问为什么升级后应用程序会给DB带来更大的压力?与v2相比,v3函数主机现在能够执行更多的调用吗
然后,我尝试通过将host.json中的batchSize降低到8,将newBatchThreshold降低到4来降低host.json配置中的队列触发器并行性,问题似乎消失了(或者至少偶尔发生一次)。但这样做,我将无法满足我的贯穿要求,消息开始堆积在队列中
我已确保使用的是所有最新版本的nuget软件包。为了尽可能多地提供信息,以下是应用程序所依赖的nuget软件包版本:
- Microsoft.Azure.WebJobs 3.0.19
- Microsoft.NET.Sdk.Functions 3.0.9
- Microsoft.Extensions.Caching.Memory 3.1.8
- Microsoft.Extensions.Configuration.Binder 3.1.8
- Microsoft.Extensions.DependencyInjection 3.1.8
- Microsoft.Extensions.DependencyInjection.Abstractions 3.1.8
- Microsoft.Extensions.Http.Polly 3.1.8
- 波利7.2.1
- Polly.Extensions.http3.0.0
- Microsoft.Azure.WebJobs.Extensions.Storage 3.0.11
- System.Data.SqlClient 4.8.2
- Microsoft.Rest.ClientRuntime 2.3.21
- Microsoft.Rest.ClientRuntime.Azure 3.3.19
非常感谢您最好使用Azure支持打开票据,和/或在GitHub@alessandro di lello上提交问题:您能检查一下它是否与Microsoft.Data.SqlClient:一起工作吗@MarkusMeyer你是说代替System.Data.SqlClient?不管怎么说,那个包裹实际上并没有被使用。我已经删除了它,错误仍然存在。