在 IIS 下运行时"The underlying provider failed on Open"



我们有一个在服务器上运行的网站。我们有一个"生产"实例和一个"暂存"实例,每个实例都有自己的数据库。MSSQL 服务器在同一台服务器上本地运行。

今天,"生产"网站突然宕机了。查看日志,出现了以下异常:

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. ---> System.InvalidOperationException: Timeout expired.  The timeout period elapsed prior to obtaining a connection from the pool.  This may have occurred because all pooled connections were in use and max pool size was reached.

与此同时,"暂存"网站运行正常。

在试图弄清楚发生了什么时,我尝试了各种事情,例如重新创建应用程序池和 IIS 应用程序。我还将"生产"IIS 应用程序连接到"暂存"应用程序的同一应用程序池,仍然是相同的问题。当然,也重新启动了服务器。

此外,我直接运行"生产"网站的可执行文件(作为控制台应用程序(,它工作正常。因此,这是一个仅在 IIS 下运行时才会发生的问题。

我尝试的最后一件事是,我重新配置了"暂存"网站以使用"生产"数据库,令我非常震惊的是,它工作正常。因为我认为问题出在"生产"数据库本身。

我只是对这里发生的事情一无所知。任何帮助都非常感谢。

如果使用连接池中的所有连接,则几乎可以肯定是因为应用程序正在打开数据库连接,但无法关闭它们。

由于您使用的是实体框架,这可能是因为您的应用程序无法释放 DbContext 对象。

这与生产数据库本身无关;与暂存站点相比,生产站点上的活动增加可能使应用程序错误更快地显现出来。

相关内容

最新更新