Azure 函数执行超时已过期



我正在使用一个逻辑应用,其中工作流在某个时间点使用Webhook URL调用 Azure 函数(作为 Azure Functions Durable 的解决方法)。

此函数的目标是使用 SQL 请求将数据插入/更新到 Azure SQL 数据库中

"MERGE INTO...USING...WHEN NOT MATCHED...WHEN MATCHED AND...".

在 Azure 函数的日志中,我可以看到它失败了,它似乎运行了 4 次(可能是由于所谓的超时,我不知道),但我不明白,因为我将命令超时增加到 50 分钟,并将 1Hour 设置为 LogicApp 中操作"启动 Webhook"的超时:S 以下是 Azure 函数中记录的异常示例:

执行功能时异常:XmlImport_DoWork Microsoft.Azure.WebJobs.Host.FunctionInvocationException : 执行函数时异常:XmlImport_DoWork ---> System.Data.SqlClient.SqlException : 执行超时已过期。 操作完成之前经过的超时期限或服务器没有响应。 该语句已终止。---> 系统.组件模型.Win32异常:等待操作超时

该表实际上有大约 250,000 行,当我将 LogicApp(以及 Azure 函数)启动到一个几乎为空的表时,这似乎很好!

关于正在发生的事情以及如何解决它的任何想法?我尝试查看Azure SQL数据库组件中的"查询性能见解",但"建议"部分中没有任何内容

存储 Azure 函数的函数应用正在使用应用服务计划。 顺便说一句,我尝试在数据库中导入的 XML 文件的大小为 20M,但我尝试使用更轻的 XML (9M),但它也没有用

Azure 持久函数:V2 和 .Net Core 2.2 - 超时过期问题

活动函数"A_ValidateAndImportData"失败:">超时已过期。在操作完成之前经过的超时期限或服务器没有响应。有关更多详细信息,请参阅函数执行日志。

使用 DAPPER 调用SQL Server 存储过程:Dapper 不支持连接字符串中的"连接超时"属性

解决方案:使用连接超时参数提供"0"(ZERO或根据需要增加超时)来解决此问题

示例代码:

public async Task<int> ValidateAndImportData(string connectionString, int param1,
int databaseTimeOut = 0)
{
using (var connection = new SqlConnection(connectionString))
{
var param = new DynamicParameters();
param.Add("@param1", param1);
param.Add("@returnStatus", dbType: DbType.Int32, direction: ParameterDirection.Output);
await connection.ExecuteAsync("[dbo].[ValidateAndImportData]", param,
commandType: CommandType.StoredProcedure, commandTimeout: databaseTimeOut).ConfigureAwait(false);
return param.Get<int>("returnStatus");
}
}

相关内容

  • 没有找到相关文章

最新更新