如何在Hangfire中检测连接池问题



我们在日志中不时看到Hangfire的以下错误:

Execution BackgroundServerProcess由于异常仍处于失败状态1.12:52:00.6668371,将在00:00:15内重试System.InvalidOperationException:超时已过期。从池中获取连接之前经过的超时时间。发生这种情况的原因可能是所有池连接都在使用中,并且已达到最大池大小。位于System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource重试,DbConnectionOptions userOptions(,位于System.Data.SqlClient.SqlConnection.TryOpenInner(TaskComplettionSource1 retry) at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource1重试(,位于System.Data.SqlClient.SqlConnection.Open((,位于Hangfire.SqlServerStorage.CreateAndOpenConnection((Hangfire.SqlServer.SqlServerStorage.UseConnection[T](DbConnection专用连接,函数2 func) at Hangfire.Server.BackgroundServerProcess.CreateServer(BackgroundServerContext context) at Hangfire.Server.BackgroundServerProcess.Execute(Guid executionId, BackgroundExecution execution, CancellationToken stoppingToken, CancellationToken stoppedToken, CancellationToken shutdownToken) at Hangfire.Server.BackgroundProcessingServer.RunServer(Guid executionId, Object state) at Hangfire.Processing.BackgroundExecution.Run(Action2回调,对象状态(

我们似乎正在最大限度地增加SQL连接池中的连接数。

我想以某种方式发现这一点,并清理水池。我该如何检测它?我可以为此使用作业筛选器吗?

升级到Hangfire的最新版本似乎已经解决了这个问题。

最新更新