Azure sql database Hangfire-后台作业创建失败。有关详细信息,请参见内部异常

Azure sql database Hangfire-后台作业创建失败。有关详细信息,请参见内部异常,azure-sql-database,hangfire,Azure Sql Database,Hangfire,我创建了一个hangfire作业作为`BackgroundJob.Enqueue(x=>x.recreaculate(itemID));将作业排队。当我连续几次尝试保存时,我从Hangfire中得到以下错误 这是堆栈跟踪 at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) at System

我创建了一个hangfire作业作为`BackgroundJob.Enqueue(x=>x.recreaculate(itemID));将作业排队。当我连续几次尝试保存时,我从Hangfire中得到以下错误

这是堆栈跟踪

   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader)
   at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command)
   at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType)
   at Hangfire.SqlServer.SqlServerWriteOnlyTransaction.<>c__DisplayClass7_0.<SetJobState>b__0(SqlConnection x)
   at Hangfire.SqlServer.SqlServerWriteOnlyTransaction.<Commit>b__4_0(SqlConnection connection)
   at Hangfire.SqlServer.SqlServerStorage.<>c__DisplayClass17_0.<UseTransaction>b__0(SqlConnection connection)
   at Hangfire.SqlServer.SqlServerStorage.UseConnection[T](Func`2 func)
   at Hangfire.SqlServer.SqlServerStorage.UseTransaction[T](Func`2 func, Nullable`1 isolationLevel)
   at Hangfire.SqlServer.SqlServerStorage.UseTransaction(Action`1 action)
   at Hangfire.Client.CoreBackgroundJobFactory.Create(CreateContext context)
   at Hangfire.Client.BackgroundJobFactory.<>c__DisplayClass7_0.<CreateWithFilters>b__0()
   at Hangfire.Client.BackgroundJobFactory.InvokeClientFilter(IClientFilter filter, CreatingContext preContext, Func`1 continuation)
   at Hangfire.Client.BackgroundJobFactory.Create(CreateContext context)
   at Hangfire.BackgroundJobClient.Create(Job job, IState state)
at System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔breakConnection,Action`1 wrapCloseInAction)
位于System.Data.SqlClient.TdsParser.ThroweException和Warning(TdsParserStateObject StateObjectStateObj、布尔调用方连接锁、布尔异步关闭)
位于System.Data.SqlClient.TdsParser.TryRun(RunBehavior RunBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、Boolean和dataReady)
位于System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds、RunBehavior RunBehavior、String ResetOptions String、Boolean isInternal、Boolean ForDescriptionParameterEncryption)
位于System.Data.SqlClient.SqlCommand.RunExecuteReaderDS(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、Boolean async、Int32超时、任务和任务、Boolean asyncWrite、Boolean inRetry、SqlDataReader ds、Boolean describeParameterEncryptionRequest)
位于System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior、RunBehavior RunBehavior、Boolean returnStream、String方法、TaskCompletionSource`1完成、Int32超时、任务和任务、Boolean和usedCache、Boolean asyncWrite、Boolean inRetry)
位于System.Data.SqlClient.SqlCommand.InternalExecuteOnQuery(TaskCompletionSource`1完成,字符串方法名,布尔sendToPipe,Int32超时,布尔和usedCache,布尔异步写入,布尔inRetry)
位于System.Data.SqlClient.SqlCommand.ExecuteOnQuery()处
在Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn,CommandDefinition&command,Action`2 paramReader)中
在Dapper.SqlMapper.ExecuteImpl(IDbConnection、CommandDefinition和command)
在Dapper.SqlMapper.Execute(IDbConnection cnn、字符串sql、对象参数、IDbTransaction事务、可为null的`1 commandTimeout、可为null的`1 commandType)
在Hangfire.SqlServer.SqlServerWriteOnlyTransaction.c__显示class7_0.b__0(SqlConnection x)
位于Hangfire.SqlServer.SqlServerWriteOnlyTransaction.b_u4_0(SqlConnection)
在Hangfire.SqlServer.SqlServerStorage.c__显示Class17_0.b__0(SqlConnection)
位于Hangfire.SqlServer.SqlServerStorage.UseConnection[T](Func`2 Func)
在Hangfire.SqlServer.SqlServerStorage.UseTransaction[T](Func`2 Func,null`1 isolationLevel)
位于Hangfire.SqlServer.SqlServerStorage.UseTransaction(操作`1操作)
位于Hangfire.Client.CoreBackgroundJobFactory.Create(CreateContext上下文)
在Hangfire.Client.BackgroundJobFactory.c_uuuDisplayClass7_0.b_uu0()中
位于Hangfire.Client.BackgroundJobFactory.InvokeClientFilter(IClientFilter筛选器,CreatingContext预文本,Func`1 continuation)
位于Hangfire.Client.BackgroundJobFactory.Create(CreateContext上下文)
在Hangfire.BackgroundJobClient.Create(作业,IState状态)
异常消息:后台作业创建失败。有关详细信息,请参阅内部异常。(BackgroundJobClientException)

内部示例:执行超时已过期。操作完成前已过超时时间,或者服务器没有响应

有人遇到过这个问题吗?这在当地很管用。但问题发生在Azure部署中。我使用的是v12数据库。谢谢你的帮助。我注意到我所有的hangfire工作创建平均需要20秒来排队完成后台工作。当我一次又一次地尝试创建作业时,它超时了。超时时间似乎是30秒


我试图增加连接超时,但不管我在连接字符串中输入的值是多少,它似乎在30秒后超时。但增加超时无论如何都不能解决根本问题。

我发现DTU的使用率在大多数情况下都是100%,这是不可接受的,因为在我测试的测试环境中没有发生什么事情。然后,我查看了Azure数据库中的性能数据,它提供了性能最差的查询,这非常方便。Handfire删除作业查询导致此性能问题。这是我们使用的Hangfire版本的一个问题。解决方案是将Hangfire升级到最新版本

SQL数据库上的DTU使用情况图是什么样子的?